define([], function () { var exports = {}; exports.jsonToJS = function (str) { return JSON.parse(str); }; var xmlNodeToJS = function (xml) { try { // Create the return object var obj = {}; if (xml.nodeType === 1) { // element // do attributes if (xml.attributes.length > 0) { for (var j = 0; j < xml.attributes.length; j++) { var attribute = xml.attributes.item(j); obj['@' + attribute.nodeName] = attribute.nodeValue; } } } else if (xml.nodeType === 3 || xml.nodeType === 4) { // text obj = xml.nodeValue; } // do children if (xml.hasChildNodes()) { for (var i = 0; i < xml.childNodes.length; i++) { var item = xml.childNodes.item(i); var nodeName = item.nodeName; if (typeof (obj[nodeName]) === 'undefined') { obj[nodeName] = xmlNodeToJS(item); } else { if (typeof (obj[nodeName].push) === 'undefined') { var old = obj[nodeName]; obj[nodeName] = []; obj[nodeName].push(old); } obj[nodeName].push(xmlNodeToJS(item)); } } } return obj; } catch (e) { return {}; } }; exports.replaceTextAndCData = function(obj) { if (typeof(obj) === "object") { if ('#text' in obj) { return obj['#text']; } if ('#cdata-section' in obj) { return obj['#cdata-section']; } for(var key in obj) { if (obj.hasOwnProperty(key)) { obj[key] = exports.replaceTextAndCData(obj[key]); } } } return obj; }; exports.xmlToJS = function (str, replaceTextAndCData) { try { if ('DOMParser' in window) { var parser = new window.DOMParser(); var xmlDoc = parser.parseFromString(str.trim(), 'text/xml'); var obj = xmlNodeToJS(xmlDoc); if (replaceTextAndCData) { return exports.replaceTextAndCData(obj); } return obj; } } catch (ex) { return {}; } }; exports.queryObject = function (obj, path) { if (typeof path == 'undefined' || path.trim() == "") throw "Het ingestelde querypad bestaat niet"; var curObj = obj; var result = []; var parts = path.split('.'); parts.forEach(function (part, i) { if (part in curObj) { if (i === parts.length - 1) { var resultObj = curObj[part]; var type = resultObj.constructor.name; if (type == 'Array') { result = []; } else if (type == "Object") { result = {}; } var keys = Object.keys(resultObj); for (var prop in keys) { if (type == 'Array') { result[prop] = resultObj[prop]; } else if (type == "Object") { var propName = keys[prop]; result[propName] = resultObj[propName]; } } } else { curObj = curObj[part]; } } else { return false; } }); return result; }; exports.compare = function (a, b, dir) { if (!dir) dir = 1; var cmp = 0; if (a > b) cmp = 1; else if (a < b) cmp = -1; return dir * cmp; }; exports.compareString = function (a, b, dir) { if (!dir) dir = 1; return dir * ('' + a).localeCompare('' + b); }; exports.format = function (str) { var i; for (i = 1; i < arguments.length; i++) { str = str.replace('{' + (i - 1) + '}', arguments[i]); } return str; }; exports.array = function (obj) { if (obj !== null && obj !== undefined) { if (Array.isArray(obj)) { return obj; } else { return [obj]; } } return []; }; exports.truncateSmart = function (str, limit) { var bits, i; bits = ('' + str).split(''); if (bits.length > limit) { for (i = bits.length - 1; i > -1; --i) { if (i > limit) { bits.length = i; } else if (' ' === bits[i]) { bits.length = i; break; } } bits.push('...'); } return bits.join(''); }; return exports; }); define(['bluebird.min', 'jquery', 'lib/moment-with-locales'], function () { var Promise = require('bluebird.min'); var $ = require('jquery'); var moment = require('lib/moment-with-locales'); var compare = function(a, b) { if (a < b) return -1; if (a > b) return 1; return 0; }; var getQueryDataFromFunction = function(fnText) { return new Promise(function (resolve, reject) { try { var fullFnText = "return function($, Promise, moment, tools) { var window, document, alert, confirm, self, parent, global; return new Promise(function(resolve, reject) { try { " + fnText + " } catch(e) { reject(e); } })};"; var fn = new Function(fullFnText)(); fn($, Promise, moment, dataTools) .timeout(10000) .then(function(data) { resolve(data); }) .catch(function(err) { var error = err.toString(); if (err.stack) { error = err.stack; } console.warn('getQueryDataFromFunction', error); reject(error); }); } catch(err) { var error = err.toString(); if (err.stack) { error = err.stack; } console.warn('getQueryDataFromFunction', error); reject(error); } }); }; return exports; }); var url = 'http://ac.weatheronyoursite.com/narrowcast_travelweather_daypart.xml'; $.ajax({ url: url, cache: false }) .done(function(resultData, result, xhr) { try { var data = tools.xmlToJS(xhr.responseText, true); var landen = tools.queryObject(data, 'WEERONLINE.continent.land'); moment.locale('nl') // land filteren var land = landen.filter(land => land.landnaam === 'Nederland')[0]; var plaats = land.plaats.filter(plaats => plaats.plaatsnaam === 'Rotterdam')[0]; var weerinfo = plaats.weerinfo[0]; var details = { naam: plaats.plaatsnaam, dag : moment(weerinfo.datum).format('dddd') }; details.ochtend = weerinfo.weerdata.filter(weerdata => weerdata.dagdeel === 'ochtend')[0]; details.middag = weerinfo.weerdata.filter(weerdata => weerdata.dagdeel === 'middag')[0]; details.avond = weerinfo.weerdata.filter(weerdata => weerdata.dagdeel === 'avond')[0]; resolve(details); } catch (err) { reject(err); } }) .fail(reject);
58200cookie-checkJavascript: Data source function