Commit 0ea54899 authored by Sven Franck's avatar Sven Franck

linting

parent a6188c92
/*jslint indent: 2, maxlen: 80, todo: true, nomen: true */
/*global document: true, require: true */
(function () { (function () {
"use strict"; "use strict";
var IS_LOCAL = /(:\/\/localhost|file:\/\/)/.test(document.location.href); var IS_LOCAL = /(:\/\/localhost|file:\/\/)/.test(document.location.href);
require.config({ require.config({
waitSeconds : (IS_LOCAL? 10 : 45) waitSeconds : (IS_LOCAL ? 10 : 45),
, paths: { paths: {
// core // core
app: '../modules/core/app/app' app: '../modules/core/app/app',
, config: '../modules/core/config/config' config: '../modules/core/config/config',
, polyfill: '../modules/core/polyfill/polyfill' polyfill: '../modules/core/polyfill/polyfill',
, overrides: '../modules/core/overrides/overrides' overrides: '../modules/core/overrides/overrides',
, utilities: '../modules/core/utilities/utilities' utilities: '../modules/core/utilities/utilities',
, extensions: '../modules/core/extensions/extensions' extensions: '../modules/core/extensions/extensions',
, storage: '../modules/core/storage/storage' storage: '../modules/core/storage/storage',
// requireJs // requireJs
, almond: '../js/libs/require/almond' almond: '../js/libs/require/almond',
, text: '../js/libs/require/text' text: '../js/libs/require/text',
, css: '../js/plugins/require-css/require-css' css: '../js/plugins/require-css/require-css',
, normalize: '../js/plugins/require-css/normalize' normalize: '../js/plugins/require-css/normalize',
, json: '../js/plugins/requirejs-plugins/json' json: '../js/plugins/requirejs-plugins/json',
, async: '../js/plugins/requirejs-plugins/async' async: '../js/plugins/requirejs-plugins/async',
// support // support
, modernizr: '../js/plugins/modernizr' modernizr: '../js/plugins/modernizr',
, selectivzr: '../js/plugins/selectivzr' selectivzr: '../js/plugins/selectivzr',
// plugins/libs // plugins/libs
, jquery: '../js/libs/jquery/jquery' jquery: '../js/libs/jquery/jquery',
, jqm: '../js/libs/jquery-mobile/jquery-mobile' jqm: '../js/libs/jquery-mobile/jquery-mobile',
, i18next: '../js/plugins/i18next/i18next' i18next: '../js/plugins/i18next/i18next',
, renderjs: '../js/plugins/renderjs/renderjs' renderjs: '../js/plugins/renderjs/renderjs',
, jio: '../js/libs/jio/jio' jio: '../js/libs/jio/jio',
, md5: '../js/libs/jio/md5' md5: '../js/libs/jio/md5',
, localstorage: '../js/libs/jio/localstorage' localstorage: '../js/libs/jio/localstorage',
, indexstorage: '../js/libs/jio/indexstorage' indexstorage: '../js/libs/jio/indexstorage',
, complex_queries:'../js/libs/jio/complex_queries' complex_queries: '../js/libs/jio/complex_queries',
, validval: '../js/plugins/validval/validval' validval: '../js/plugins/validval/validval',
// page gadgets // page gadgets
, address: '../modules/ui/address/address' address: '../modules/ui/address/address',
, basket: '../modules/ui/basket/basket' basket: '../modules/ui/basket/basket',
, pagination: '../modules/ui/pagination/pagination' pagination: '../modules/ui/pagination/pagination',
, confirm: '../modules/ui/confirm/confirm' confirm: '../modules/ui/confirm/confirm',
, details: '../modules/ui/details/details' details: '../modules/ui/details/details',
, footer: '../modules/ui/footer/footer' footer: '../modules/ui/footer/footer',
, gallery: '../modules/ui/gallery/gallery' gallery: '../modules/ui/gallery/gallery',
, header: '../modules/ui/header/header' header: '../modules/ui/header/header',
, index: '../modules/ui/index/index' index: '../modules/ui/index/index',
, item: '../modules/ui/item/item' item: '../modules/ui/item/item',
, items: '../modules/ui/items/items' items: '../modules/ui/items/items',
, login: '../modules/ui/login/login' login: '../modules/ui/login/login',
, media: '../modules/ui/media/media' media: '../modules/ui/media/media',
, payment: '../modules/ui/payment/payment' payment: '../modules/ui/payment/payment',
, refine: '../modules/ui/refine/refine' refine: '../modules/ui/refine/refine',
, register: '../modules/ui/register/register' register: '../modules/ui/register/register',
, products: '../modules/ui/products/products' products: '../modules/ui/products/products',
, searchbar: '../modules/ui/searchbar/searchbar' searchbar: '../modules/ui/searchbar/searchbar',
, seo: '../modules/ui/seo/seo' seo: '../modules/ui/seo/seo',
, shipment: '../modules/ui/shipment/shipment' shipment: '../modules/ui/shipment/shipment',
, sorting: '../modules/ui/sorting/sorting' sorting: '../modules/ui/sorting/sorting',
, summary: '../modules/ui/summary/summary' summary: '../modules/ui/summary/summary',
, teaser: '../modules/ui/teaser/teaser' teaser: '../modules/ui/teaser/teaser',
, terms: '../modules/ui/terms/terms' terms: '../modules/ui/terms/terms',
, translate: '../modules/ui/translate/translate' translate: '../modules/ui/translate/translate',
, pageheader: '../modules/ui/pageheader/pageheader' pageheader: '../modules/ui/pageheader/pageheader',
, pagefooter: '../modules/ui/pagefooter/pagefooter' pagefooter: '../modules/ui/pagefooter/pagefooter'
} },
, shim: { shim: {
'jqm': { deps: ['jquery'], exports: 'mobile' } 'jqm': { deps: ['jquery'], exports: 'mobile' },
, 'jio': { deps: ['md5'] } 'jio': { deps: ['md5'] },
, 'localstorage': { deps: ['jio', 'complex_queries'] } 'localstorage': { deps: ['jio', 'complex_queries'] },
, 'indexstorage': { deps: ['jio'] } 'indexstorage': { deps: ['jio'] },
, 'renderjs': { deps: ['jquery'], exports: 'RenderJs' } 'renderjs': { deps: ['jquery'], exports: 'RenderJs' },
, 'app': { deps: ['jio'], exports: 'App' } 'app': { deps: ['jio'], exports: 'App' },
, 'validval': { deps: ['jquery'] } 'validval': { deps: ['jquery'] }
} },
, map: { map: {
'*': { '*': {
'css': '../js/plugins/require-css/css' 'css': '../js/plugins/require-css/css'
} }
...@@ -86,12 +87,11 @@ ...@@ -86,12 +87,11 @@
}); });
require(['app', 'config'], function(App, Config) { require(['app', 'config'], function (App, Config) {
var setup = new $.Deferred(); var i,
var spec = {}; setup = new $.Deferred(),
var i; spec = {};
var def;
spec.app = App; spec.app = App;
spec.config = Config; spec.config = Config;
...@@ -100,16 +100,18 @@ ...@@ -100,16 +100,18 @@
// fallback for fast browsers... // fallback for fast browsers...
spec.fallbackLoader = { spec.fallbackLoader = {
deferreds: [], deferreds: [],
args: [], args: []
}; };
// expose App once everything is loaded // expose App once everything is loaded
spec.setup.done(function(App, Config) { spec.setup.done(function (App, Config) {
// expose configuration - settings // expose configuration - settings
App.settings = Config.settings; App.settings = Config.settings;
// expose configuration - storages // expose configuration - storages
App.storage = Config.storage; App.storage = Config.storage;
// expose errors
App.errors = [];
for (i = 0; i < window.fallbackLoader.deferreds.length; i += 1) { for (i = 0; i < window.fallbackLoader.deferreds.length; i += 1) {
window.fallbackLoader.deferreds[i] window.fallbackLoader.deferreds[i]
......
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global document: true, $: true, require: true, define: true,
RenderJs: true */
define([ define([
'overrides' 'overrides',
, 'jquery' 'jquery',
, 'jqm' 'jqm',
, 'extensions' 'extensions',
, 'polyfill' 'polyfill',
, 'text' 'text',
, 'json' 'json',
, 'renderjs' 'renderjs',
, 'i18next' 'i18next',
, 'css!../css/jquery-mobile/jquery-mobile.latest' 'css!../css/jquery-mobile/jquery-mobile.latest',
, 'css!../css/css' 'css!../css/css',
, 'css!../css/normalize/normalize' 'css!../css/normalize/normalize'
], function () { ],
function () {
"use strict"; "use strict";
var priv = {}; var priv = {},
var that = {}; that = {};
/* ======================================================================== /* =================================================================== */
ATTRIBUTES /* ATTRIBUTES */
======================================================================== */ /* =================================================================== */
// document // document
priv.doc = $.mobile.document || $(document); priv.doc = $.mobile.document || $(document);
/* ========================================================================
FLAGS /* =================================================================== */
======================================================================== */ /* FLAGS */
/* =================================================================== */
// first page loaded // first page loaded
priv.pageWrapLoaded; priv.pageWrapLoaded = undefined;
// ========================================================================
// INTERNAL METHODS /* =================================================================== */
// ======================================================================== /* INTERNAL METHODS */
/* =================================================================== */
// //
// add page header and footer (meta/scripts) to first page loaded (only!) // add page header and footer (meta/scripts) to first page loaded (only!)
...@@ -49,10 +55,9 @@ define([ ...@@ -49,10 +55,9 @@ define([
// setup page header and footer configuration // setup page header and footer configuration
priv.allset.resolve(spec); priv.allset.resolve(spec);
// .then(function(App, Config) { // .then(function(App, Config) {
// console.log("this should be the 2nd callback run AFTER we have set configuration"); // console.log(App);
// console.log(App); // console.log(Config);
// console.log(Config);
// var widgetsForThisRequest = [ // var widgetsForThisRequest = [
// "text!../gadgets/pageheader.html", // "text!../gadgets/pageheader.html",
...@@ -68,15 +73,14 @@ define([ ...@@ -68,15 +73,14 @@ define([
// //
// for ( i = 0; i < widgetsForThisRequest.length; i++){ // for ( i = 0; i < widgetsForThisRequest.length; i++){
// template_target = target[i]; // template_target = target[i];
// // if customization based on user data required (add logo/img urls, etc) // // do all customizations with settings here!
// // it should be done here with widget being a string that can be
// // modified with replace method // // modified with replace method
// widget = arguments[i]; // widget = arguments[i];
// template_target.append( widget ); // template_target.append( widget );
// } // }
// } // }
// ); // );
// }); // });
} }
...@@ -130,7 +134,8 @@ define([ ...@@ -130,7 +134,8 @@ define([
object = values[i]; object = values[i];
method = object[1]; method = object[1];
gadget.dom.find("." + object[0])[method]( gadget.dom.find("." + object[0])[method](
object[2], method === "attr" ? object[3] : null object[2],
method === "attr" ? object[3] : null
); );
} }
break; break;
...@@ -173,11 +178,11 @@ define([ ...@@ -173,11 +178,11 @@ define([
}); });
} }
}) })
.on('pagebeforehide', 'div.ui-page', function(e, data) { .on('pagebeforehide', 'div.ui-page', function (e, data) {
// pagebeforehide triggers before remove and data includes the new // pagebeforehide triggers before remove and data includes the new
// page being loaded. This means we can override clearing the gadgetIndex // page being loaded. This means we override clearing gadgetIndex
// in case we are going to a page that has already been loaded. Instead // in case we are going to a page that has already been loaded.
// we setReady to false. // Instead we setReady to false.
var page = $(this), var page = $(this),
pageId = page.attr('id'), pageId = page.attr('id'),
nextPageId = data.nextPage.attr('id'), nextPageId = data.nextPage.attr('id'),
...@@ -195,7 +200,7 @@ define([ ...@@ -195,7 +200,7 @@ define([
setFalse = true; setFalse = true;
} }
}) })
.on('pageremove', 'div.ui-page', function (e, data) { .on('pageremove', 'div.ui-page', function () {
var page = $(this), var page = $(this),
pageId = page.attr('id'), pageId = page.attr('id'),
pageGadget; pageGadget;
...@@ -216,7 +221,7 @@ define([ ...@@ -216,7 +221,7 @@ define([
RenderJs.GadgetIndex.unregisterGadget(pageGadget); RenderJs.GadgetIndex.unregisterGadget(pageGadget);
} }
setFalse = false; setFalse = false;
}) });
}; };
// //
...@@ -239,12 +244,12 @@ define([ ...@@ -239,12 +244,12 @@ define([
// create new deferred for waiting until all initialization is done // create new deferred for waiting until all initialization is done
priv.allset = new $.Deferred(); priv.allset = new $.Deferred();
priv.allset.done(function(spec) { priv.allset.done(function (spec) {
spec.configuration_setter(spec); spec.configuration_setter(spec);
}); });
// > set up globals // > set up globals
priv.setupGlobalParameters() priv.setupGlobalParameters();
// > add <head>er and footer to first page only // > add <head>er and footer to first page only
priv.wrapFirstPage(spec); priv.wrapFirstPage(spec);
...@@ -272,7 +277,8 @@ define([ ...@@ -272,7 +277,8 @@ define([
gadget_cleaned_id, gadget_cleaned_id,
propsToSet, propsToSet,
new_id, new_id,
fwd = [], i; fwd = [],
i;
if (!gadget_parent.is(".ui-page-active")) { if (!gadget_parent.is(".ui-page-active")) {
return; return;
...@@ -284,7 +290,7 @@ define([ ...@@ -284,7 +290,7 @@ define([
gadget.setEnhanced(true); gadget.setEnhanced(true);
} }
gadget_props = gadget["state"]; gadget_props = gadget.state;
gadget_cleaned_id = gadget_id.split("__").slice(-1)[0]; gadget_cleaned_id = gadget_id.split("__").slice(-1)[0];
// JSON property API // JSON property API
...@@ -309,7 +315,8 @@ define([ ...@@ -309,7 +315,8 @@ define([
} }
priv.getElements( priv.getElements(
gadget, "a[data-rel='popup'], a[data-rel='panel']" gadget,
"a[data-rel='popup'], a[data-rel='panel']"
).each(function () { ).each(function () {
var href = this.getAttribute('href').replace("#", ''), var href = this.getAttribute('href').replace("#", ''),
prefixedHref = priv.prefixElement(href, gadget_id); prefixedHref = priv.prefixElement(href, gadget_id);
...@@ -330,7 +337,8 @@ define([ ...@@ -330,7 +337,8 @@ define([
priv.getElements(gadget, "> div[data-gadget]").each(function () { priv.getElements(gadget, "> div[data-gadget]").each(function () {
if (fwd.length > 0) { if (fwd.length > 0) {
this.setAttribute( this.setAttribute(
'data-gadget-property', JSON.stringify({ 'data-gadget-property',
JSON.stringify({
"state": fwd "state": fwd
}) })
); );
...@@ -367,5 +375,5 @@ define([ ...@@ -367,5 +375,5 @@ define([
// return public methods // return public methods
return that; return that;
}
}); );
\ No newline at end of file \ No newline at end of file
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global document: true, require: true, define: true, RenderJs: true */
define([ define([
'app' 'storage',
, 'storage' 'app',
, 'utilities' 'utilities',
, 'async' 'async'
], ],
function (App, storage) { function (storage) {
"use strict"; "use strict";
var priv = {}; var priv = {},
var that = {}; that = {};
// set return object // set return object
that.settings = {}; that.settings = {};
...@@ -23,10 +25,10 @@ define([ ...@@ -23,10 +25,10 @@ define([
spec.framed = "medium"; spec.framed = "medium";
if ($.mobile.media("screen and (max-width:20em)") || if ($.mobile.media("screen and (max-width:20em)") ||
($.mobile.browser.oldIE && $(window).width() < o.lowerThresh)) { ($.mobile.browser.oldIE && $(window).width() < spec.lowerThresh)) {
spec.framed = "small"; spec.framed = "small";
} else if ($.mobile.media("screen and (min-width:45em)") || } else if ($.mobile.media("screen and (min-width:45em)") ||
($.mobile.browser.oldIE && $(window).width() >= o.upperThresh )) { ($.mobile.browser.oldIE && $(window).width() >= spec.upperThresh)) {
spec.framed = "large"; spec.framed = "large";
} }
return spec.framed; return spec.framed;
...@@ -36,17 +38,24 @@ define([ ...@@ -36,17 +38,24 @@ define([
if (spec.response === undefined) { if (spec.response === undefined) {
// TODO: this defaults could be set somewhere else as well // TODO: this defaults could be set somewhere else as well
spec.config.settings.language_default = "en-EN"; spec.config.settings.language_default = "en-EN";
spec.config.settings.language_current = spec.config.settings.language_default; spec.config.settings.language_current =
spec.config.settings.language_default;
spec.config.settings.language_selector = "translate"; spec.config.settings.language_selector = "translate";
spec.config.settings.language_set = "false"; spec.config.settings.language_set = "false";
spec.config.settings.item_selector = "item_id"; spec.config.settings.item_selector = "item_id";
} else { } else {
// create application settings // create application settings
spec.config.settings.language_default = spec.response.language_default || "en-EN"; spec.config.settings.language_default =
spec.config.settings.language_current = spec.response.language_current || spec.config.settings.language_default; spec.response.language_default || "en-EN";
spec.config.settings.language_selector = spec.response.selector || "translate"; spec.config.settings.language_current =
spec.config.settings.language_set = spec.response.language_set || "false"; spec.response.language_current ||
spec.config.settings.item_selector = spec.response.item_selector || "item_id"; spec.config.settings.language_default;
spec.config.settings.language_selector =
spec.response.selector || "translate";
spec.config.settings.language_set =
spec.response.language_set || "false";
spec.config.settings.item_selector =
spec.response.item_selector || "item_id";
} }
spec.config.settings.screen_format = priv.setScreenDimensions(); spec.config.settings.screen_format = priv.setScreenDimensions();
...@@ -60,7 +69,7 @@ define([ ...@@ -60,7 +69,7 @@ define([
// store settings // store settings
if (data !== undefined) { if (data !== undefined) {
// add to localstorage // add to localstorage
data["_id"] = "config"; data._id = "config";
storage.queryStorage({ storage.queryStorage({
"storage": "settings", "storage": "settings",
...@@ -75,8 +84,9 @@ define([ ...@@ -75,8 +84,9 @@ define([
}; };
// fallback: collect configuration from file // fallback: collect configuration from file
$.getJSON( $.getJSON(
"http://www.franckreich.de/members/export/x/configuration.json?callback=?", "http://www.franckreich.de/members/export/x/" +
function(data) { "configuration.json?callback=?",
function (data) {
priv.config_call(data); priv.config_call(data);
} }
); );
...@@ -91,19 +101,20 @@ define([ ...@@ -91,19 +101,20 @@ define([
spec.storage = "settings"; spec.storage = "settings";
spec.method = "get"; spec.method = "get";
spec.doc = {"_id":"config"}; spec.doc = {"_id": "config"};
spec.callback = function(err, response) { spec.callback = function (err, response) {
if (err) { if (err) {
priv.JSONPfallback(param); priv.JSONPfallback(param);
} }
param.response = response; param.response = response;
priv.setApplicationSetters(param); priv.setApplicationSetters(param);
} };
storage.queryStorage(spec); storage.queryStorage(spec);
} };
// return config // return config
return that; return that;
} }
); );
This diff is collapsed.
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global document: true, $: true, define: true, */
define(['jquery'], function ($) { define(['jquery'], function ($) {
"use strict"; "use strict";
......
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global document: true, $: true, define: true, jIO: true */
define([ define([
'jquery' 'jquery',
, 'complex_queries' 'complex_queries',
, 'jio' 'jio',
, 'md5' 'md5',
, 'localstorage' 'localstorage'
//, 'indexstorage' ],
], function () { function () {
"use strict"; "use strict";
var priv = {}; var priv = {},
var that = {}; that = {};
// ======================================================================== // ======================================================================
// ATTRIBUTES // ATTRIBUTES
// ======================================================================== // ======================================================================
// ======================================================================== // ======================================================================
// INTERNAL METHODS // INTERNAL METHODS
// ======================================================================== // ======================================================================
// ============================ JIO ======================== // ============================ JIO ========================
// //
...@@ -74,7 +76,9 @@ define([ ...@@ -74,7 +76,9 @@ define([
"price": 44.95, "price": 44.95,
"original_price": 64.95, "original_price": 64.95,
"total_sales": 69, "total_sales": 69,
"description": "DOUBELT BREASTED JACKET 100% Polyester, matière souple et très résistante. entretien facile Coupe ajustée Fermeture boutons sur le devant Longueur : 78cm en taille S", "description": "DOUBELT BREASTED JACKET 100% Polyester, matière " +
"souple et très résistante. entretien facile Coupe ajustée " +
"Fermeture boutons sur le devant Longueur : 78cm en taille S",
"media": "http://www.weinparis.com/en/product_module/", "media": "http://www.weinparis.com/en/product_module/",
"comments": [{ "comments": [{
"date": "2012/12/13", "date": "2012/12/13",
...@@ -160,7 +164,9 @@ define([ ...@@ -160,7 +164,9 @@ define([
"price": "134.00", "price": "134.00",
"original_price": "134.00", "original_price": "134.00",
"total_sales": 40, "total_sales": 40,
"description": "Pantalon 95% polyester 5% spandex. Coupe droite. Fluide. Poches italiennes. Taille élastiquée. un look décontracté chic !", "description": "Pantalon 95% polyester 5% spandex. Coupe droite. " +
"Fluide. Poches italiennes. Taille élastiquée. un look " +
"décontracté chic !",
"media": "http://www.weinparis.com/en/product_module/", "media": "http://www.weinparis.com/en/product_module/",
"comments": [{ "comments": [{
"date": "2012/12/03", "date": "2012/12/03",
...@@ -244,7 +250,8 @@ define([ ...@@ -244,7 +250,8 @@ define([
"price": "45.00", "price": "45.00",
"original_price": "65.00", "original_price": "65.00",
"total_sales": 14, "total_sales": 14,
"description": "Pull bi-matière. coton bio avec polyester Col rond petite poche à une côte. coupe ample", "description": "Pull bi-matière. coton bio avec polyester Col rond " +
"petite poche à une côte. coupe ample",
"media": "http://www.weinparis.com/en/product_module/", "media": "http://www.weinparis.com/en/product_module/",
"comments": [{ "comments": [{
"date": "2012/12/03", "date": "2012/12/03",
...@@ -327,7 +334,9 @@ define([ ...@@ -327,7 +334,9 @@ define([
"price": "55.00", "price": "55.00",
"original_price": "75.00", "original_price": "75.00",
"total_sales": 182, "total_sales": 182,
"description": "pantalon en 97% Cotton 3% Elastane Fermeture: braguette à fermeture éclair cachée Poches: poches de coté Lavage en machine à 30° C", "description": "pantalon en 97% Cotton 3% Elastane Fermeture: " +
"braguette à fermeture éclair cachée Poches: poches de coté " +
"Lavage en machine à 30° C",
"media": "http://www.weinparis.com/en/product_module/", "media": "http://www.weinparis.com/en/product_module/",
"comments": [{ "comments": [{
"date": "2012/12/01", "date": "2012/12/01",
...@@ -535,7 +544,9 @@ define([ ...@@ -535,7 +544,9 @@ define([
"price": "30.00", "price": "30.00",
"original_price": "45.00", "original_price": "45.00",
"total_sales": 5, "total_sales": 5,
"description": "Debarteur en Polyester. matière souple et très résistante. entretien facile Coupe ample Fermeture éclair sur le dos.", "description": "Debarteur en Polyester. matière souple et très" +
"résistante. entretien facile Coupe ample Fermeture éclair " +
"sur le dos.",
"media": "http://www.weinparis.com/en/product_module/", "media": "http://www.weinparis.com/en/product_module/",
"comments": [{ "comments": [{
"date": "2012/11/03", "date": "2012/11/03",
...@@ -608,7 +619,7 @@ define([ ...@@ -608,7 +619,7 @@ define([
priv.initialize = function () { priv.initialize = function () {
// > set up JIOs // > set up JIOs
priv.setupJIO(function() { priv.setupJIO(function () {
// > populate JIOs // > populate JIOs
priv.populate_item_storage(); priv.populate_item_storage();
}); });
...@@ -618,7 +629,7 @@ define([ ...@@ -618,7 +629,7 @@ define([
// PUBLIC METHODS => window.App.method() // PUBLIC METHODS => window.App.method()
// ======================================================================== // ========================================================================
// //
// query one of the available storages // query one of the available storages
// @method queryStorage // @method queryStorage
// @param {object} param > jIO parameters (storage, method, doc, options...) // @param {object} param > jIO parameters (storage, method, doc, options...)
...@@ -626,7 +637,11 @@ define([ ...@@ -626,7 +637,11 @@ define([
// //
that.queryStorage = function (param) { that.queryStorage = function (param) {
if (param.doc !== undefined) { if (param.doc !== undefined) {
priv[param.storage][param.method](param.doc, param.options, param.callback); priv[param.storage][param.method](
param.doc,
param.options,
param.callback
);
} else { } else {
priv[param.storage][param.method](param.options, param.callback); priv[param.storage][param.method](param.options, param.callback);
} }
...@@ -666,23 +681,26 @@ define([ ...@@ -666,23 +681,26 @@ define([
query.limit = []; query.limit = [];
query.sort_on = []; query.sort_on = [];
query.select_list = []; query.select_list = [];
query.wildcard_character = '%' query.wildcard_character = '%';
// if we have a pointer, we can disregard method & options, // if we have a pointer, we can disregard method & options,
// but we must set on spec directly, because query will only be // but we must set on spec directly, because query will only be
// assigned in a defined case // assigned in a defined case
// TODO: not nice to hardquery for "allDocs" here, but... improve later // TODO: not nice to hardquery for "allDocs" here, but... improve later
if (param.pointer === undefined && param.method === "allDocs" && spec.options !== undefined) { if (param.pointer === undefined &&
param.method === "allDocs" &&
spec.options !== undefined) {
spec.options.limit = param.options.limit; spec.options.limit = param.options.limit;
spec.options.sort_on = param.options.sort_on; spec.options.sort_on = param.options.sort_on;
spec.options.select_list = param.options.select_list || spec.default_items; spec.options.select_list = param.options.select_list ||
spec.options.wildcard_character = '%' spec.default_items;
spec.options.wildcard_character = '%';
} }
// queries can be run // queries can be run
// > with different cases (currently upper/lower case), // > with different cases (currently upper/lower case),
// > on full select_list (passed elements or default), // > on full select_list (passed elements or default),
// > without a query object, if empty string is passed (nothing to parse, faster search) // > without a query object, if empty string is passed (parse faster)
// > TODO: optionable? // > TODO: optionable?
if (spec.query) { if (spec.query) {
if (spec.query_string !== "") { if (spec.query_string !== "") {
...@@ -690,13 +708,16 @@ define([ ...@@ -690,13 +708,16 @@ define([
spec.query_string, spec.query_string,
spec.query_string.toUpperCase(), spec.query_string.toUpperCase(),
spec.query_string.toLowerCase(), spec.query_string.toLowerCase(),
spec.query_string.charAt(0).toUpperCase() + spec.query_string.slice(1) spec.query_string.charAt(0).toUpperCase() +
spec.query_string.slice(1)
); );
for (j = 0; j < cases.length; j += 1) { for (j = 0; j < cases.length; j += 1) {
for (i = 0; i < spec.options.select_list.length; i += 1) { for (i = 0; i < spec.options.select_list.length; i += 1) {
item = spec.options.select_list[i]; item = spec.options.select_list[i];
searchString += item + ': = "' + query.wildcard_character + cases[j] + query.wildcard_character + '"'; searchString += item + ': = "' +
if (i < spec.options.select_list.length-1) { query.wildcard_character + cases[j] +
query.wildcard_character + '"';
if (i < spec.options.select_list.length - 1) {
searchString += ' OR '; searchString += ' OR ';
} }
} }
...@@ -729,15 +750,16 @@ define([ ...@@ -729,15 +750,16 @@ define([
break; break;
} }
}; };
// ======================================================================== // ======================================================================
// INITIALIZE // INITIALIZE
// ======================================================================== // ======================================================================
priv.initialize(); priv.initialize();
// ======================================================================== // ======================================================================
// PUBLISH APP // PUBLISH APP
// ======================================================================== // ======================================================================
// return public methods to main.js // return public methods to main.js
return that; return that;
}); }
\ No newline at end of file );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global document: true, define: true, $: true */
define([ define([
'app' 'app'
], function (App) { ],
function (App) {
"use strict"; "use strict";
// this module provides generic methods usable across all gadgets/modules // this module provides generic methods usable across all gadgets/modules
var that = {}; var that = {};
...@@ -17,19 +20,18 @@ define([ ...@@ -17,19 +20,18 @@ define([
while (elem) { while (elem) {
if (matchesSelector.bind(elem)(selector)) { if (matchesSelector.bind(elem)(selector)) {
return elem; return elem;
} else {
elem = elem.parentNode;
} }
elem = elem.parentNode;
} }
return false; return false;
} else { }
// opera... // opera...
fallback = $( elem ).closest(selector); fallback = $(elem).closest(selector);
if (fallback.length > 0) { if (fallback.length > 0) {
return fallback; return fallback;
} }
return false; return false;
}
}; };
// object size // object size
that.objectSize = function (obj) { that.objectSize = function (obj) {
...@@ -37,7 +39,7 @@ define([ ...@@ -37,7 +39,7 @@ define([
for (key in obj) { for (key in obj) {
if (obj.hasOwnProperty(key)) { if (obj.hasOwnProperty(key)) {
size++; size += 1;
} }
} }
return size; return size;
...@@ -47,4 +49,4 @@ define([ ...@@ -47,4 +49,4 @@ define([
return undefined; return undefined;
} }
); );
\ No newline at end of file
/*jslint indent: 2, maxlen: 80 */
/*global define: true, $: true, define: true, window: true */
define([ define([
'app' 'app',
, 'text!address.html!strip' 'text!address.html!strip',
, 'validval' 'validval',
, 'css!address' 'css!address'
], ],
function (App, source, validator) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -28,4 +32,4 @@ define([ ...@@ -28,4 +32,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!basket.html!strip' 'text!basket.html!strip',
, 'css!basket' 'validval',
], 'css!basket'
],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +32,5 @@ define([ ...@@ -27,4 +32,5 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!confirm.html!strip' 'text!confirm.html!strip',
, 'css!confirm' 'validval',
], 'css!confirm'
],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +32,4 @@ define([ ...@@ -27,4 +32,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, define: true, window: true, App: true */
define([ define([
'app' 'app',
, 'text!details.html!strip' 'text!details.html!strip',
, 'css!details' 'css!details'
], ],
function (App, source) { function (App, source) {
var that = {}; "use strict";
var priv = {};
var that = {},
priv = {};
// cleanup memory // cleanup memory
priv.cleanupMemory = function (memory) { priv.cleanupMemory = function (memory) {
...@@ -40,30 +44,33 @@ define([ ...@@ -40,30 +44,33 @@ define([
var id, now, spec, module; var id, now, spec, module;
// we will have an item to display. Grab it and go! // we will have an item to display. Grab it and go!
if (location.search !== "") { if (window.location.search !== "") {
spec = {}; spec = {};
spec.pointer = location.search.split("=")[1]; spec.pointer = window.location.search.split("=")[1];
spec.storage = "items" spec.storage = "items";
spec.method = "get" spec.method = "get";
spec.doc = {"_id": spec.pointer } spec.doc = {"_id": spec.pointer };
// TODO: should be passed via JSON? // TODO: should be passed via JSON?
module = "storage"; module = "storage";
now = new Date().getTime(); now = new Date().getTime();
} else { } else {
// route to all products // route to all products
$.mobile.changePage("products.html", {"transition":"fade"}); $.mobile.changePage("products.html", {"transition": "fade"});
} }
// jio response // jio response
spec.callback = function(err, response) { spec.callback = function (err, response) {
if (err) { if (err) {
// error handling App.errors.push({
module: "details",
timestamp: now,
error: err
});
} else { } else {
id = response._id; id = response._id;
App.cacheItems[id] = [response, now]; App.cacheItems[id] = [response, now];
// memory // memory
...@@ -72,7 +79,7 @@ define([ ...@@ -72,7 +79,7 @@ define([
// this is not response.callback(!!) // this is not response.callback(!!)
params.callback_mockup(params.source); params.callback_mockup(params.source);
} };
// query for items // query for items
App[module].switchboard(spec); App[module].switchboard(spec);
}; };
...@@ -96,14 +103,20 @@ define([ ...@@ -96,14 +103,20 @@ define([
// // TODO: this is for page event bindings. Once JQM content replaces // // TODO: this is for page event bindings. Once JQM content replaces
// // page, remove this and make the gadget the content section to // // page, remove this and make the gadget the content section to
// // be updated. // // be updated.
// spec.page = App.util.closest(spec.gadget.dom.get(0), "div[data-role='page']"); // spec.page = App.util.closest(
// spec.gadget.dom.get(0),
// "div[data-role='page']"
// );
// spec.pageId = "#" + spec.page.id; // spec.pageId = "#" + spec.page.id;
// spec.source = source; // spec.source = source;
// spec.callback_mockup = callback_mockup; // spec.callback_mockup = callback_mockup;
// //
// if (!spec.page.getAttribute("events_details")) { // if (!spec.page.getAttribute("events_details")) {
// spec.page.setAttribute("events_details", true); // spec.page.setAttribute("events_details", true);
// $(document).on("pagebeforeshow.details", spec.pageId, function (e, data) { // $(document).on(
// "pagebeforeshow.details",
// spec.pageId,
// function (e, data) {
// // TODO: if we allow to reload, we also need to trigger refresh on // // TODO: if we allow to reload, we also need to trigger refresh on
// // so we need to reload this every time a page is shown. question // // so we need to reload this every time a page is shown. question
// // is how to trigger a refresh on this element ONLY // // is how to trigger a refresh on this element ONLY
...@@ -116,9 +129,9 @@ define([ ...@@ -116,9 +129,9 @@ define([
that.after = function (self) { that.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; var def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -134,4 +147,4 @@ define([ ...@@ -134,4 +147,4 @@ define([
// return response object // return response object
return that; return that;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!footer.html!strip' 'text!footer.html!strip',
, 'css!footer' 'css!footer'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, define: true, window: true, App: true, RenderJs: true,
document: true */
define([ define([
'app' 'app',
, 'text!gallery.html!strip' 'text!gallery.html!strip',
, 'css!gallery' 'css!gallery'
], ],
function (App, source) { function (App, source) {
var that = {}; "use strict";
var priv = {};
var that = {},
priv = {};
// ========================== ATTRIBUTES ============================== // ========================== ATTRIBUTES ==============================
// set response, so it's available across function calls // set response, so it's available across function calls
priv.response; priv.response = undefined;
priv.generateGallery = function (response) { priv.generateGallery = function (response) {
// expose response (will be overwritten, when next item loads // expose response (will be overwritten, when next item loads
...@@ -21,7 +26,7 @@ define([ ...@@ -21,7 +26,7 @@ define([
// TODO: zoom is missing, this should also be a feature of gallery // TODO: zoom is missing, this should also be a feature of gallery
// TODO: 404 fallback images! // TODO: 404 fallback images!
// ala photoswipe // ala photoswipe
var i, j, item, img, gallery, thumbnails = "", str, obj, variations; var i, item, gallery, thumbnails = "", variations;
gallery = "<div class='gallery_wrap'><ul data-role='carousel' " + gallery = "<div class='gallery_wrap'><ul data-role='carousel' " +
"data-inset='true' class='ui-responsive tester'" + "data-inset='true' class='ui-responsive tester'" +
...@@ -37,15 +42,18 @@ define([ ...@@ -37,15 +42,18 @@ define([
variations = priv.response.dimensions[0].vars; variations = priv.response.dimensions[0].vars;
if (variations.length > 1) { if (variations.length > 1) {
thumbnails += "<div class='gallery_thumbnails '><ul data-role='" + thumbnails += "<div class='gallery_thumbnails '><ul data-role='" +
"listview' data-inset='true' class='gallery_thumbnail_wrapper'>"; "listview' data-inset='true' class='gallery_thumbnail_wrapper'>";
for (i = 0; i < variations.length; i += 1) { for (i = 0; i < variations.length; i += 1) {
item = variations[i]; item = variations[i];
// thumbnails - click on link should trigger the display method // thumbnails - click on link should trigger the display method
thumbnails += "<li data-icon='false'><a href='#" + item.name + "' class='" + thumbnails += "<li data-icon='false'><a href='#" + item.name +
"display_item'><img src='" + response.media + item.media.img[0]["t"] + "' alt='" "' class='display_item'><img src='" + response.media +
+ item.name + "' /><h3 class='translate gallery_header' data-i18n='" + item.media.img[0].t + "' alt='" + item.name +
"' /><h3 class='translate gallery_header' data-i18n='" +
item.i18n + "'>" + item.name + "</h3></li>"; item.i18n + "'>" + item.name + "</h3></li>";
} }
thumbnails += "</ul></div>"; thumbnails += "</ul></div>";
...@@ -54,7 +62,7 @@ define([ ...@@ -54,7 +62,7 @@ define([
gallery += "</ul></div>"; gallery += "</ul></div>";
return str = gallery + thumbnails; return gallery + thumbnails;
}; };
// TODO: show some thing // TODO: show some thing
...@@ -79,15 +87,19 @@ define([ ...@@ -79,15 +87,19 @@ define([
// generate gallery list items // generate gallery list items
priv.generateGalleryItems = function (name) { priv.generateGalleryItems = function (name) {
var i, j, item, img, str = ""; var i, j, img,
str = "",
item = priv.response.dimensions[0].vars[0]; // TODO: should not be hardcoded to first variation!!!
item = priv.response.dimensions[0].vars[0],
screen = App.settings.screen_format,
size = screen === "small" ? "small" : "medium",
shortcut = size.substring(0, 1);
// find item name or default to first variant in dimension // find item name or default to first variant in dimension
if (name !== undefined) { if (name !== undefined) {
for (i = 0; i < priv.response.dimensions[0].vars.length; i += 1) { for (i = 0; i < priv.response.dimensions[0].vars.length; i += 1) {
item = priv.response.dimensions[0].vars[i]; item = priv.response.dimensions[0].vars[i];
if (item.name === name || location.hash === name) { if (item.name === name || window.location.hash === name) {
break; break;
} }
} }
...@@ -99,10 +111,10 @@ define([ ...@@ -99,10 +111,10 @@ define([
for (j = 0; j < item.media.img.length; j += 1) { for (j = 0; j < item.media.img.length; j += 1) {
img = item.media.img[j]; img = item.media.img[j];
// TODO: add zoom/photoswipe later! // TODO: add zoom/photoswipe later!
str += "<li class='product_img'><a href='#'><img src='" + priv.response.media + str += "<li class='product_img'><a href='#'><img src='" +
img[shortcut] + size + "' alt='" + item.name + "' />" + priv.response.media + img[shortcut] + size + "' alt='" +
"<h3 class='translate gallery_header' data-i18n='" + item.name + "' />" + "<h3 class='translate gallery_header' " +
item.i18n + "'></h3></a></li>"; "data-i18n='" + item.i18n + "'></h3></a></li>";
} }
return str; return str;
...@@ -120,17 +132,12 @@ define([ ...@@ -120,17 +132,12 @@ define([
// generate items to display // generate items to display
priv.generateItems = function (params) { priv.generateItems = function (params) {
var markup, spec, response; var markup, spec,
id = params.gadget.dom.attr('id').split("__").splice(-1)[0], id = params.gadget.dom.attr('id').split("__").splice(-1)[0],
config = params.gadget.state[0][id]._config, config = params.gadget.state[0][id]._config,
module = config.datasource.module, module = config.datasource.module,
urlPointer = params.pointer.length > 1, urlPointer = params.pointer.length > 1,
jsonPointer = config.datasource.pointer, jsonPointer = config.datasource.pointer;
// TODO: settable options
screen = App.settings.screen_format,
size = screen === "small" ? "small" : "medium",
shortcut = size.substring(0, 1);
// if we have a pointer-array passed, query that // if we have a pointer-array passed, query that
// TODO: this is not flexible yet, because "items" and "get" are hardcoded // TODO: this is not flexible yet, because "items" and "get" are hardcoded
...@@ -138,9 +145,9 @@ define([ ...@@ -138,9 +145,9 @@ define([
// what is stored on the image links... // what is stored on the image links...
if (urlPointer) { if (urlPointer) {
spec = {}; spec = {};
spec.storage = "items" spec.storage = "items";
spec.method = "get" spec.method = "get";
spec.doc = {"_id": params.pointer[1]} spec.doc = {"_id": params.pointer[1]};
} }
if (jsonPointer) { if (jsonPointer) {
...@@ -149,15 +156,28 @@ define([ ...@@ -149,15 +156,28 @@ define([
// in the configuration file, as it's something the user can use or not // in the configuration file, as it's something the user can use or not
// also - should be possible to make this fullscreen by supplying the // also - should be possible to make this fullscreen by supplying the
// carousel options! // carousel options!
spec.items = [ spec.items = [{
{"src":"img/stella.jpg", "caption":"Stella", "i18n": "custom.teaser.stella", "href": "products.html?search=stella"}, "src": "img/stella.jpg",
{"src":"img/nannin.jpg", "caption":"Nan", "i18n": "custom.teaser.nan", "href": "products.html?search=nan"}, "caption": "Stella",
{"src":"img/vila.jpg", "caption":"Vila", "i18n": "custom.teaser.vila", "href": "products.html?search=vila"} "i18n": "custom.teaser.stella",
] "href": "products.html?search=stella"
}, {
"src": "img/nannin.jpg",
"caption": "Nan",
"i18n": "custom.teaser.nan",
"href": "products.html?search=nan"
}, {
"src": "img/vila.jpg",
"caption": "Vila",
"i18n": "custom.teaser.vila",
"href": "products.html?search=vila"
}];
} }
// callback to generate gallery // callback to generate gallery
spec.callback = function(err, response) { spec.callback = function (err, response) {
var str;
if (err) { if (err) {
str = priv.generateError(); str = priv.generateError();
} else { } else {
...@@ -184,7 +204,7 @@ define([ ...@@ -184,7 +204,7 @@ define([
// just run callback now and generate gallery // just run callback now and generate gallery
spec.callback(undefined, spec); spec.callback(undefined, spec);
} }
} };
// response object // response object
that.data = source; that.data = source;
...@@ -192,11 +212,14 @@ define([ ...@@ -192,11 +212,14 @@ define([
var spec = {}; var spec = {};
spec.gadget = RenderJs.getSelfGadget(); spec.gadget = RenderJs.getSelfGadget();
spec.page = App.util.closest(spec.gadget.dom.get(0), "div[data-role='page']"); spec.page = App.util.closest(
spec.gadget.dom.get(0),
"div[data-role='page']"
);
spec.pageId = "#" + spec.page.id; spec.pageId = "#" + spec.page.id;
// TODO: retrieving pointers should be a generic method that retrieves // TODO: retrieving pointers should be a generic method that retrieves
// pointers either from the URL or from a JSON config object passed! // pointers either from the URL or from a JSON config object passed!
spec.pointer = location.search.split("="); spec.pointer = window.location.search.split("=");
spec.callback_mockup = callback_mockup; spec.callback_mockup = callback_mockup;
spec.source = source; spec.source = source;
...@@ -204,10 +227,10 @@ define([ ...@@ -204,10 +227,10 @@ define([
if (!spec.page.getAttribute("events_gallery")) { if (!spec.page.getAttribute("events_gallery")) {
spec.page.setAttribute("events_gallery", true); spec.page.setAttribute("events_gallery", true);
$(document).on("pagebeforeshow.gallery", spec.pageId, function (e) { $(document).on("pagebeforeshow.gallery", spec.pageId, function () {
// the pointer in the URL may be updated // the pointer in the URL may be updated
if (location.search) { if (window.location.search) {
spec.pointer = location.search.split("="); spec.pointer = window.location.search.split("=");
} }
priv.generateItems(spec, true); priv.generateItems(spec, true);
}) })
...@@ -229,9 +252,9 @@ define([ ...@@ -229,9 +252,9 @@ define([
that.after = function (self) { that.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; var def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget, true); App.renderGadgets(gadget, true);
}); });
...@@ -247,4 +270,4 @@ define([ ...@@ -247,4 +270,4 @@ define([
// return response object // return response object
return that; return that;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!header.html!strip' 'text!header.html!strip',
, 'css!header' 'css!header'
], ],
function (App, source) { function (App, source) {
"use strict";
var response = {}, def; var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
// TODO: this should be inside renderJs, although its application-specific
// but the problem with using async-render-require will be everything
// being loaded at the same time, so the user should have the opportunity
// to run his callback no matter where. Still not sure where to wait
// (app-init or render-init), but it would be nice if a renderjs application
// would allow for a first page load deferred on all gadgets until some
// flag is set. In rjs2, we will not have to set globals, but we will
// have the problem of trying to access methods published by other gadgets
// BEFORE they have been published, so it's pretty much the same thing.
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -36,4 +31,4 @@ define([ ...@@ -36,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!index.html!strip' 'text!index.html!strip',
, 'css!index' 'css!index'
], ],
function (App, source) { function (App, source) {
"use strict";
var response = {}, def; var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, define: true, window: true, App: true,
RenderJs: true, document: true */
define([ define([
'app' 'app',
, 'text!item.html!strip' 'text!item.html!strip',
, 'css!item' 'css!item'
], ],
function (App, source) { function (App, source) {
var that = {}; "use strict";
var priv = {};
var that = {},
priv = {};
// ========================== ATTRIBUTES ============================== // ========================== ATTRIBUTES ==============================
// set response, so it's available across function calls // set response, so it's available across function calls
priv.response; priv.response = undefined;
priv.generateContent = function (response) { priv.generateContent = function (response) {
var i, j, k, content, child, dimension, dimensions, variation, var i, j, k, content, child, dimension, dimensions, variation, price,
sub_dimension, sub_dimension_i18n, str, select, element, soldout; sub_dimension, sub_dimension_i18n, str, select, element, soldout;
// expose response (will be overwritten, when next item loads // expose response (will be overwritten, when next item loads
...@@ -61,7 +66,7 @@ define([ ...@@ -61,7 +66,7 @@ define([
select = ""; select = "";
} }
dimensions += "<option class='translate' data-i18n='" + dimensions += "<option class='translate' data-i18n='" +
variation.i18n + "' "+ select + " value='" + variation.name + variation.i18n + "' " + select + " value='" + variation.name +
"'>" + variation.name + "</option>"; "'>" + variation.name + "</option>";
} }
...@@ -88,10 +93,11 @@ define([ ...@@ -88,10 +93,11 @@ define([
soldout = "disabled"; soldout = "disabled";
} }
child += "<option class='translate' data-i18n='" + element.i18n + child += "<option class='translate' data-i18n='" + element.i18n +
"' " + soldout + " value ='" + element.name + "'>" + + "</option>"; "' " + soldout + " value ='" + element.name + "'>" +
element.name + "</option>";
} }
} }
str = content + dimensions + child +"</select></div>"; str = content + dimensions + child + "</select></div>";
return [str, response.description ]; return [str, response.description ];
}; };
...@@ -101,7 +107,7 @@ define([ ...@@ -101,7 +107,7 @@ define([
}; };
// generate content items? // generate content items?
priv.generateContentItems = function (name) { // priv.generateContentItems = function (name) {
// var i, j, item, img, str = ""; // var i, j, item, img, str = "";
// //
// item = priv.response.dimensions[0].vars[0]; // item = priv.response.dimensions[0].vars[0];
...@@ -110,7 +116,7 @@ define([ ...@@ -110,7 +116,7 @@ define([
// if (name !== undefined) { // if (name !== undefined) {
// for (i = 0; i < priv.response.dimensions[0].vars.length; i += 1) { // for (i = 0; i < priv.response.dimensions[0].vars.length; i += 1) {
// item = priv.response.dimensions[0].vars[i]; // item = priv.response.dimensions[0].vars[i];
// if (item.name === name || location.hash === name) { // if (item.name === name || window.location.hash === name) {
// break; // break;
// } // }
// } // }
...@@ -122,49 +128,47 @@ define([ ...@@ -122,49 +128,47 @@ define([
// for (j = 0; j < item.media.img.length; j += 1) { // for (j = 0; j < item.media.img.length; j += 1) {
// img = item.media.img[j]; // img = item.media.img[j];
// // TODO: add zoom/photoswipe later! // // TODO: add zoom/photoswipe later!
// str += "<li class='product_img'><a href='#'><img src='" + priv.response.media + // str += "<li class='product_img'><a href='#'><img src='" +
// img[shortcut] + size + "' alt='" + item.name + "' />" + // priv.response.media + img[shortcut] + size + "' alt='" +
// "<h3 class='translate gallery_header' data-i18n='" + // item.name + "' />" + "<h3 class='translate gallery_header' " +
// item.i18n + "'></h3></a></li>"; // data-i18n='" + item.i18n + "'></h3></a></li>";
// } // }
// //
// return str; // return str;
}; // };
priv.swapSecondaryOptions = function (name, element) { // priv.swapSecondaryOptions = function (name, element) {
// var newString = priv.generateContentItems(name), // var newString = priv.generateContentItems(name),
// // TODO: if thumbnails are a gallery option, it should be possible // // TODO: if thumbnails are a gallery option, it should be possible
// // to reference the gallery from the thumbnail without doing this: // // to reference the gallery from the thumbnail without doing this:
// wrap = App.util.closest(element, ".gallery_thumbnails").previousSibling, // wrap = App.util.closest(
// element,
// ".gallery_thumbnails"
// ).previousSibling,
// gallery = wrap.getElementsByTagName("ul"); // gallery = wrap.getElementsByTagName("ul");
// //
// $(gallery[0]).empty().append(newString).carousel("refresh"); // $(gallery[0]).empty().append(newString).carousel("refresh");
}; // };
// generate items to display // generate items to display
priv.generateItems = function (params) { priv.generateItems = function (params) {
var markup, spec, response; var markup, spec,
id = params.gadget.dom.attr('id').split("__").splice(-1)[0], id = params.gadget.dom.attr('id').split("__").splice(-1)[0],
config = params.gadget.state[0][id]._config, config = params.gadget.state[0][id]._config,
module = config.datasource.module, module = config.datasource.module,
urlPointer = params.pointer.length > 1, urlPointer = params.pointer.length > 1;
jsonPointer = config.datasource.pointer;
// if we have a pointer-array passed, query that // if we have a pointer-array passed, query that
// TODO: this access a globally stored current_item set by details gadget! // TODO: this access a globally stored current_item set by details gadget!
if (urlPointer) { if (urlPointer) {
spec = {}; spec = {};
spec.storage = "items" spec.storage = "items";
spec.method = "get" spec.method = "get";
spec.doc = {"_id": params.pointer[1]} spec.doc = {"_id": params.pointer[1]};
}
if (jsonPointer) {
} }
// callback to generate gallery // callback to generate gallery
spec.callback = function(err, response) { spec.callback = function (err, response) {
var str; var str;
if (err) { if (err) {
...@@ -184,7 +188,7 @@ define([ ...@@ -184,7 +188,7 @@ define([
if (urlPointer) { if (urlPointer) {
App[module].switchboard(spec); App[module].switchboard(spec);
} }
} };
// response object // response object
that.data = source; that.data = source;
...@@ -192,11 +196,14 @@ define([ ...@@ -192,11 +196,14 @@ define([
var spec = {}; var spec = {};
spec.gadget = RenderJs.getSelfGadget(); spec.gadget = RenderJs.getSelfGadget();
spec.page = App.util.closest(spec.gadget.dom.get(0), "div[data-role='page']"); spec.page = App.util.closest(
spec.gadget.dom.get(0),
"div[data-role='page']"
);
spec.pageId = "#" + spec.page.id; spec.pageId = "#" + spec.page.id;
// TODO: retrieving pointers should be a generic method that retrieves // TODO: retrieving pointers should be a generic method that retrieves
// pointers either from the URL or from a JSON config object passed! // pointers either from the URL or from a JSON config object passed!
spec.pointer = location.search.split("="); spec.pointer = window.location.search.split("=");
spec.callback_mockup = callback_mockup; spec.callback_mockup = callback_mockup;
spec.source = source; spec.source = source;
...@@ -204,14 +211,14 @@ define([ ...@@ -204,14 +211,14 @@ define([
if (!spec.page.getAttribute("events_items")) { if (!spec.page.getAttribute("events_items")) {
spec.page.setAttribute("events_items", true); spec.page.setAttribute("events_items", true);
$(document).on("pagebeforeshow.items", spec.pageId, function (e) { $(document).on("pagebeforeshow.items", spec.pageId, function () {
// the pointer in the URL may be updated // the pointer in the URL may be updated
if (location.search) { if (window.location.search) {
spec.pointer = location.search.split("="); spec.pointer = window.location.search.split("=");
} }
priv.generateItems(spec, true); priv.generateItems(spec, true);
}) });
.on("change.item", spec.pageId + " .main_dimension", function (e) { // .on("change.item", spec.pageId + " .main_dimension", function (e) {
// var target = e.target, // var target = e.target,
// color; // color;
// //
...@@ -221,7 +228,7 @@ define([ ...@@ -221,7 +228,7 @@ define([
// color = App.util.closest(target, "a").href.split("#")[1]; // color = App.util.closest(target, "a").href.split("#")[1];
// } // }
// priv.swapSecondaryOptions(color, e.target); // priv.swapSecondaryOptions(color, e.target);
}); // });
// and run intial // and run intial
priv.generateItems(spec); priv.generateItems(spec);
} }
...@@ -229,9 +236,9 @@ define([ ...@@ -229,9 +236,9 @@ define([
that.after = function (self) { that.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; var def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget, true); App.renderGadgets(gadget, true);
}); });
...@@ -247,4 +254,4 @@ define([ ...@@ -247,4 +254,4 @@ define([
// return response object // return response object
return that; return that;
} }
); );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, define: true, window: true, App: true,
RenderJs: true, document: true */
define([ define([
'app' 'app',
, 'text!items.html!strip' 'text!items.html!strip',
, 'css!items' 'css!items'
], ],
function (App, source) { function (App, source) {
var that = {}; "use strict";
var priv = {};
var that = {},
priv = {};
// in the perfect renderjs world, the items gadget should either expose // in the perfect renderjs world, the items gadget should either expose
// an API on how to pass ... query string ... or have default config // an API on how to pass ... query string ... or have default config
...@@ -14,12 +19,11 @@ define([ ...@@ -14,12 +19,11 @@ define([
// generate items to display // generate items to display
priv.generateItems = function (params) { priv.generateItems = function (params) {
var markup, spec, var markup,
spec,
id = params.gadget.dom.attr('id').split("__").splice(-1)[0], id = params.gadget.dom.attr('id').split("__").splice(-1)[0],
config = params.gadget.state[0][id]._config, config = params.gadget.state[0][id]._config,
module = config.datasource.module, module = config.datasource.module,
// settable options
screen = App.settings.screen_format, screen = App.settings.screen_format,
size = screen === "small" ? "small" : "medium", size = screen === "small" ? "small" : "medium",
shortcut = size.substring(0, 1), shortcut = size.substring(0, 1),
...@@ -28,23 +32,31 @@ define([ ...@@ -28,23 +32,31 @@ define([
spec = {}; spec = {};
spec.pointer = config.datasource.pointer; spec.pointer = config.datasource.pointer;
spec.method = spec.pointer ? undefined : config.datasource.method || "allDocs"; spec.method = spec.pointer ?
spec.storage = spec.pointer ? undefined : config.datasource.storage || "items"; undefined : config.datasource.method || "allDocs";
spec.options = spec.pointer ? undefined : { spec.storage = spec.pointer ?
undefined : config.datasource.storage || "items";
spec.options = spec.pointer ?
undefined : {
"limit": config.datasource.limit || [0, 24], "limit": config.datasource.limit || [0, 24],
"sort_on": config.datasource.sort || [["_id", "descending"]], "sort_on": config.datasource.sort || [["_id", "descending"]],
"select_list": config.datasource.fields || undefined "select_list": config.datasource.fields || undefined
}; };
// if we have a search tag being passed, run a search // if we have a search tag being passed, run a search
if (location.search !== "") { if (window.location.search !== "") {
spec.query = true; spec.query = true;
spec.query_string = location.search.split("=")[1].replace("+", " "); spec.query_string = window.location.search
.split("=")[1].replace("+", " ");
} }
spec.callback = function(err, response) { spec.callback = function (err, response) {
var item, i, str = "", price; var item, i, str = "", price,
now = new Date().getTime();
if (err) {
App.errors.push(["items", now, err]);
}
// cleanup // cleanup
// no results // no results
...@@ -66,11 +78,11 @@ define([ ...@@ -66,11 +78,11 @@ define([
price = item.price + item.currency; price = item.price + item.currency;
} else { } else {
price = "<span class='rebate'>" + item.price + item.currency + price = "<span class='rebate'>" + item.price + item.currency +
"</span> (" + item.original_price + item.currency +")"; "</span> (" + item.original_price + item.currency + ")";
} }
str += "<li data-icon='false'>" + str += "<li data-icon='false'>" +
"<a href='details.html?"+ identifier + "=" + "<a href='details.html?" + identifier + "=" +
encodeURI(item[identifier]) + encodeURI(item[identifier]) +
"' title='" + item.brand + ", " + item.title + "'>" + "' title='" + item.brand + ", " + item.title + "'>" +
"<span class='img_container_items'>" + "<span class='img_container_items'>" +
...@@ -88,7 +100,7 @@ define([ ...@@ -88,7 +100,7 @@ define([
// this is not response.callback(!!) // this is not response.callback(!!)
params.callback_mockup(markup); params.callback_mockup(markup);
} };
// query for items // query for items
App[module].switchboard(spec); App[module].switchboard(spec);
...@@ -103,22 +115,27 @@ define([ ...@@ -103,22 +115,27 @@ define([
// TODO: this is for page event bindings. Once JQM content replaces // TODO: this is for page event bindings. Once JQM content replaces
// page, remove this and make the gadget the content section to // page, remove this and make the gadget the content section to
// be updated. // be updated.
spec.page = App.util.closest(spec.gadget.dom.get(0), "div[data-role='page']"); spec.page = App.util.closest(
spec.gadget.dom.get(0),
"div[data-role='page']"
);
spec.pageId = "#" + spec.page.id; spec.pageId = "#" + spec.page.id;
spec.source = source; spec.source = source;
spec.callback_mockup = callback_mockup; spec.callback_mockup = callback_mockup;
if (!spec.page.getAttribute("events_items")) { if (!spec.page.getAttribute("events_items")) {
spec.page.setAttribute("events_items", true); spec.page.setAttribute("events_items", true);
$(document).on("pagebeforeshow.items", spec.pageId, function (e, data) { $(document).on(
// TODO: if we allow to reload, we also need to trigger refresh on "pagebeforeshow.items",
spec.pageId,
function () {
// TODO: if we allow reload, we also need to trigger refresh on
// so we need to reload this every time a page is shown. question // so we need to reload this every time a page is shown. question
// is how to trigger a refresh on this element ONLY // is how to trigger a refresh on this element ONLY
// > the gadgets should tell whether they need enhancement! // > the gadgets should tell whether they need enhancement!
//if ($.mobile.firstPage.attr('id') !== spec.pageId.replace("#","")) {
priv.generateItems(spec); priv.generateItems(spec);
//} }
}); );
// and run intial // and run intial
priv.generateItems(spec); priv.generateItems(spec);
} }
...@@ -131,7 +148,8 @@ define([ ...@@ -131,7 +148,8 @@ define([
var target, search = {}; var target, search = {};
e.preventDefault(); e.preventDefault();
target = App.util.closest(e.target, "a").getAttribute("href").split("?")[1].split("="); target = App.util.closest(e.target, "a")
.getAttribute("href").split("?")[1].split("=");
search[target[0]] = target[1]; search[target[0]] = target[1];
// show this item // show this item
...@@ -142,9 +160,9 @@ define([ ...@@ -142,9 +160,9 @@ define([
}); });
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; var def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget, true); App.renderGadgets(gadget, true);
}); });
...@@ -160,4 +178,5 @@ define([ ...@@ -160,4 +178,5 @@ define([
// return response object // return response object
return that; return that;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!login.html!strip' 'text!login.html!strip',
, 'validval' 'validval',
, 'css!login' 'css!login'
], ],
function (App, source, validator) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -28,4 +32,4 @@ define([ ...@@ -28,4 +32,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!media.html!strip' 'text!media.html!strip',
, 'css!media' 'css!media'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, window: true, App: true, RenderJs: true,
document: true, define: true */
define([ define([
'app' 'app',
, 'text!pagination.html!strip' 'text!pagination.html!strip',
, 'css!pagination' 'css!pagination'
], ],
function (App, source) { function (App, source) {
var priv = {}; "use strict";
var that = {};
var priv = {},
that = {};
// get previous and next id // get previous and next id
// TODO: this only works with id-numbers!!! // TODO: this only works with id-numbers!!!
...@@ -13,7 +18,7 @@ define([ ...@@ -13,7 +18,7 @@ define([
// unless we want to get allDocs(includeDocs) // unless we want to get allDocs(includeDocs)
// TODO: this should receive the total number of results of a query/search! // TODO: this should receive the total number of results of a query/search!
priv.getPrevNextItem = function (arr, id, next, max) { priv.getPrevNextItem = function (arr, id, next, max) {
var step = next ? 1 : -1, position, id; var position;
for (position = 1; position <= max; position += 1) { for (position = 1; position <= max; position += 1) {
if (position === parseFloat(id)) { if (position === parseFloat(id)) {
...@@ -23,13 +28,12 @@ define([ ...@@ -23,13 +28,12 @@ define([
return false; return false;
} }
return arr[position].id; return arr[position].id;
} else { }
// less 1 is self, less 2 is previous... // less 1 is self, less 2 is previous...
if (arr[position-2] === undefined) { if (arr[position - 2] === undefined) {
return false; return false;
} }
return arr[position-2].id; return arr[position - 2].id;
}
} }
} }
}; };
...@@ -53,39 +57,65 @@ define([ ...@@ -53,39 +57,65 @@ define([
config = params.gadget.state[0][id]._config, config = params.gadget.state[0][id]._config,
module = config.datasource.module; module = config.datasource.module;
var spec = {}; spec = {};
spec.pointer = config.datasource.pointer; spec.pointer = config.datasource.pointer;
spec.method = spec.pointer ? undefined : config.datasource.method || "allDocs"; spec.method = spec.pointer ?
spec.storage = spec.pointer ? undefined : config.datasource.storage || "items"; undefined : config.datasource.method || "allDocs";
spec.options = spec.pointer ? undefined : config.datasource.options || { spec.storage = spec.pointer ?
"sort_on": [["_id","ascending"]] undefined : config.datasource.storage || "items";
} spec.options = spec.pointer ?
undefined : config.datasource.options || {
"sort_on": [["_id", "ascending"]]
};
spec.callback = function (err, response) { spec.callback = function (err, response) {
var currentId = location.href.split("?")[1].split("=")[1], var next, prev, markup,
currentId = window.location.href.split("?")[1].split("=")[1],
identifier = App.settings.identifier || "item_id", identifier = App.settings.identifier || "item_id",
next, prev, markup; now = new Date().getTime();
// TODO: error handling // TODO: error handling
if (err) { if (err) {
App.errors.push(["pagination", now, err]);
} else { } else {
// set next // set next
// TODO: this is bad, because we can only point to doc_id, no matter what // TODO: bad, because we can only point to doc_id, no matter what
// identifier we are setting. item_id itself is... bad... fix! // identifier we are setting. item_id itself is... bad... fix!
next = priv.getPrevNextItem(response.rows, currentId, true, response.total_rows); next = priv.getPrevNextItem(
response.rows,
currentId,
true,
response.total_rows
);
if (!next) { if (!next) {
markup = params.source.replace("translate next", "translate next ui-state-disabled"); markup = params.source.replace(
"translate next",
"translate next ui-state-disabled"
);
} else { } else {
markup = params.source.replace(identifier + "=next", identifier + "=" + next); markup = params.source.replace(
identifier + "=next",
identifier + "=" + next
);
} }
// set previous // set previous
prev = priv.getPrevNextItem(response.rows, currentId, false, response.total_rows); prev = priv.getPrevNextItem(
response.rows,
currentId,
false,
response.total_rows
);
if (!prev) { if (!prev) {
markup = markup.replace("translate prev", "translate prev ui-state-disabled"); markup = markup.replace(
"translate prev",
"translate prev ui-state-disabled"
);
} else { } else {
markup = markup.replace(identifier + "=prev", identifier + "=" + prev); markup = markup.replace(
identifier + "=prev",
identifier + "=" + prev
);
} }
} }
params.callback_mockup(markup); params.callback_mockup(markup);
...@@ -95,8 +125,8 @@ define([ ...@@ -95,8 +125,8 @@ define([
App[module].switchboard(spec); App[module].switchboard(spec);
}; };
priv.setBindings = function (param) { // priv.setBindings = function (param) {
var doc = $(document); // var doc = $(document);
// doc // doc
// .on("pagebeforeshow.browser", param.pageId, function (e) { // .on("pagebeforeshow.browser", param.pageId, function (e) {
// console.log("pbs"); // console.log("pbs");
...@@ -114,7 +144,7 @@ define([ ...@@ -114,7 +144,7 @@ define([
// // changePage // // changePage
// priv.displayItem(target); // priv.displayItem(target);
// }); // });
}; // };
that.data = source; that.data = source;
that.before = function (source, callback_mockup) { that.before = function (source, callback_mockup) {
...@@ -124,21 +154,28 @@ define([ ...@@ -124,21 +154,28 @@ define([
// TODO: this is for page event bindings. Once JQM content replaces // TODO: this is for page event bindings. Once JQM content replaces
// page, remove this and make the gadget the content section to // page, remove this and make the gadget the content section to
// be updated. // be updated.
spec.page = App.util.closest(spec.gadget.dom.get(0), "div[data-role='page']"); spec.page = App.util.closest(
spec.gadget.dom.get(0),
"div[data-role='page']"
);
spec.pageId = "#" + spec.page.id; spec.pageId = "#" + spec.page.id;
spec.source = source; spec.source = source;
spec.callback_mockup = callback_mockup; spec.callback_mockup = callback_mockup;
if (!spec.page.getAttribute("events_pagination")) { if (!spec.page.getAttribute("events_pagination")) {
spec.page.setAttribute("events_pagination", true); spec.page.setAttribute("events_pagination", true);
$(document).on("pagebeforeshow.pagination", spec.pageId, function (e, data) { $(document).on(
"pagebeforeshow.pagination",
spec.pageId,
function () {
// TODO: if we allow to reload, we also need to trigger refresh on // TODO: if we allow to reload, we also need to trigger refresh on
// so we need to reload this every time a page is shown. question // so we need to reload this every time a page is shown. question
// is how to trigger a refresh on this element ONLY // is how to trigger a refresh on this element ONLY
// > the gadgets should tell whether they need enhancement! // > the gadgets should tell whether they need enhancement!
// callback // callback
priv.iterate(spec); priv.iterate(spec);
}); }
);
// callback // callback
priv.iterate(spec); priv.iterate(spec);
...@@ -147,22 +184,22 @@ define([ ...@@ -147,22 +184,22 @@ define([
that.after = function (self) { that.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; var def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget, true); App.renderGadgets(gadget);
}); });
window.fallbackLoader.deferreds.push(def); window.fallbackLoader.deferreds.push(def);
window.fallbackLoader.args.push(self); window.fallbackLoader.args.push(self);
} else { } else {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(self, true); App.renderGadgets(self);
} }
}; };
// return response object // return response object
return that; return that;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!payment.html!strip' 'text!payment.html!strip',
, 'css!payment' 'css!payment'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
\ No newline at end of file
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!products.html!strip' 'text!products.html!strip',
, 'css!products' 'css!products'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
\ No newline at end of file
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!refine.html!strip' 'text!refine.html!strip',
, 'css!refine' 'css!refine'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
\ No newline at end of file
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!register.html!strip' 'text!register.html!strip',
, 'css!register' 'css!register'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
\ No newline at end of file
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, define: true, window: true, App: true,
RenderJs: true, document: true */
define([ define([
'app' 'app',
, 'text!searchbar.html!strip' 'text!searchbar.html!strip',
, 'css!searchbar' 'css!searchbar'
], ],
function (App, source) { function (App, source) {
"use strict";
var response = {}; var response = {};
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
var filter = self.dom.find(".searchbar_filter"), var runSearch, def,
value, runSearch; filter = self.dom.find(".searchbar_filter");
runSearch = function (value) { runSearch = function (value) {
$.mobile.changePage( "products.html", { $.mobile.changePage("products.html", {
"transition": "slide", "transition": "slide",
"allowSamePageTransition": true, "allowSamePageTransition": true,
"data": { "data": {
...@@ -21,12 +26,13 @@ define([ ...@@ -21,12 +26,13 @@ define([
}); });
}; };
filter.on("filterablebeforefilter", function (e, data) { filter.on("filterablebeforefilter", function (e) {
value = data.input.value; // TODO: add back data
// var value = data.input.value;
// stop JQM // stop JQM
e.preventDefault(); e.preventDefault();
if ( value ) { //if (value) {
// now we can autocomplete... // now we can autocomplete...
// this should also run from JIO // this should also run from JIO
// whatever happens should take into account presets // whatever happens should take into account presets
...@@ -45,23 +51,23 @@ define([ ...@@ -45,23 +51,23 @@ define([
// rest must be stored in an attachment. // rest must be stored in an attachment.
// and jIO // and jIO
} // }
}) })
.on( "filterablecreate", function( e, ui ) { .on("filterablecreate", function (e) {
var $el = $( e.target.previousSibling ), var $el = $(e.target.previousSibling),
input = $el.find("input"), input = $el.find("input"),
action = $el.find("a.ui-input-action"); action = $el.find("a.ui-input-action");
// TODO: search should be run here and results should be passed to // TODO: search should be run here and results should be passed to
// items or ?. Otherwise items has to listen for ... something, grab // items or ?. Otherwise items has to listen for ... something, grab
// data from somewhere and query. This makes more sense here. // data from somewhere and query. This makes more sense here.
action.on("click", function(e) { action.on("click", function () {
runSearch(input.val()); runSearch(input.val());
}); });
input.on("keypress", function (e) { input.on("keypress", function (e) {
if (e.which == 13) { if (e.which === 13) {
e.preventDefault(); e.preventDefault();
runSearch(input.val()); runSearch(input.val());
} }
...@@ -71,9 +77,9 @@ define([ ...@@ -71,9 +77,9 @@ define([
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -89,4 +95,5 @@ define([ ...@@ -89,4 +95,5 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!seo.html!strip' 'text!seo.html!strip',
, 'css!seo' 'css!seo'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!shipment.html!strip' 'text!shipment.html!strip',
, 'css!shipment' 'css!shipment'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!sorting.html!strip' 'text!sorting.html!strip',
, 'css!sorting' 'css!sorting'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!summary.html!strip' 'text!summary.html!strip',
, 'css!summary' 'css!summary'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!teaser.html!strip' 'text!teaser.html!strip',
, 'css!teaser' 'css!teaser'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80 */
/*global define: true, define: true, $: true, window: true */
define([ define([
'app' 'app',
, 'text!terms.html!strip' 'text!terms.html!strip',
, 'css!terms' 'css!terms'
], ],
function (App, source) { function (App, source) {
var response = {}; "use strict";
var response = {}, def;
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
App.renderGadgets(gadget); App.renderGadgets(gadget);
}); });
...@@ -27,4 +31,4 @@ define([ ...@@ -27,4 +31,4 @@ define([
// return response object // return response object
return response; return response;
} }
); );
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define: true, $: true, define: true, window: true, App: true,
RenderJs: true, document: true */
define([ define([
'app' 'app',
, 'text!translate.html!strip' 'text!translate.html!strip',
, 'css!translate' 'css!translate'
], ],
function (App, source) { function (App, source) {
"use strict";
var response = {}; var response = {};
response.data = source; response.data = source;
response.after = function (self) { response.after = function (self) {
var that = {}; var priv = {},
var priv = {}; def;
var def;
// ==================================================================== // ====================================================================
// ATTRIBUTES // ATTRIBUTES
...@@ -36,7 +40,7 @@ define([ ...@@ -36,7 +40,7 @@ define([
// //
priv.prefixId = function (id, gadget) { priv.prefixId = function (id, gadget) {
return gadget.dom.attr('id') + "__" + id; return gadget.dom.attr('id') + "__" + id;
} };
// //
// modify the icon of the popup button // modify the icon of the popup button
...@@ -44,13 +48,13 @@ define([ ...@@ -44,13 +48,13 @@ define([
// @param {object} gadget > gadget object // @param {object} gadget > gadget object
// @param {string} icon > class name for icon // @param {string} icon > class name for icon
// //
priv.setIcon = function (gadget, language) { priv.setIcon = function (language) {
// TODO: remove setTimeout! // TODO: remove setTimeout!
window.setTimeout(function(){ window.setTimeout(function () {
$(".pick_language") $(".pick_language")
.removeClass("[class|='ui-icon']") .removeClass("[class|='ui-icon']")
.addClass("ui-icon-" + language); .addClass("ui-icon-" + language);
},50); }, 50);
}; };
// //
...@@ -58,7 +62,7 @@ define([ ...@@ -58,7 +62,7 @@ define([
// @method translate // @method translate
// @param {string} language > language to set // @param {string} language > language to set
// //
priv.translate = function (language, target) { priv.translate = function (target) {
var collection = target || $('body'); var collection = target || $('body');
collection.find("." + App.settings.language_selector).i18n(); collection.find("." + App.settings.language_selector).i18n();
}; };
...@@ -78,11 +82,11 @@ define([ ...@@ -78,11 +82,11 @@ define([
"resGetPath": 'lang/__lng__/__ns__.json', "resGetPath": 'lang/__lng__/__ns__.json',
"ns": 'app' "ns": 'app'
}, function () { }, function () {
priv.translate(language); priv.translate();
}); });
App.settings.language_set = "true"; App.settings.language_set = "true";
} else { } else {
priv.translate(language); priv.translate();
} }
}; };
...@@ -99,25 +103,24 @@ define([ ...@@ -99,25 +103,24 @@ define([
priv.setIcon(language); priv.setIcon(language);
}; };
// ======================================================================== // ====================================================================
// BINDINGS // BINDINGS
// ======================================================================== // ====================================================================
// TODO: remove once callable per link! // TODO: remove once callable per link!
// TODO: why do I need to call $.i18n.setLng again? // TODO: why do I need to call $.i18n.setLng again?
priv.doc.on("ready", function () { priv.doc.on("ready", function () {
var that = $(this); var that = $(this);
that that.filter(function () {
.filter(function() {
return that.attr("i18n") !== "set"; return that.attr("i18n") !== "set";
}) })
.attr("i18n", "set") .attr("i18n", "set")
.on("click", "a.change_language", function (e) { .on("click", "a.change_language", function (e) {
var language = this.getAttribute("href").replace('?lang=',''); var language = this.getAttribute("href").replace('?lang=', '');
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
$(".popup_all").popup( 'close' ); $(".popup_all").popup("close");
if (App.settings.language_current !== language) { if (App.settings.language_current !== language) {
// update language // update language
...@@ -127,7 +130,7 @@ define([ ...@@ -127,7 +130,7 @@ define([
priv.setIcon(language); priv.setIcon(language);
// translate // translate
$.i18n.setLng(language, function() { $.i18n.setLng(language, function () {
priv.setTranslations(language); priv.setTranslations(language);
}); });
} }
...@@ -139,7 +142,6 @@ define([ ...@@ -139,7 +142,6 @@ define([
// PUBLISH METHODS // PUBLISH METHODS
// ==================================================================== // ====================================================================
// TODO: remove once callable via link // TODO: remove once callable via link
// TODO: can I add methods to a module, when accessing the module from another module???
App.translate = priv.translate; App.translate = priv.translate;
// prefix instance-ids, pass JSON, trigger("create") // prefix instance-ids, pass JSON, trigger("create")
...@@ -152,11 +154,11 @@ define([ ...@@ -152,11 +154,11 @@ define([
}; };
if (App === undefined) { if (App === undefined) {
def = new $.Deferred; def = new $.Deferred();
def.done(function(gadget) { def.done(function (gadget) {
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
priv.deferred_setup_translations(gadget) priv.deferred_setup_translations(gadget);
}); });
window.fallbackLoader.deferreds.push(def); window.fallbackLoader.deferreds.push(def);
...@@ -165,9 +167,9 @@ define([ ...@@ -165,9 +167,9 @@ define([
// prefix instance-ids, pass JSON // prefix instance-ids, pass JSON
priv.deferred_setup_translations(priv.gadget); priv.deferred_setup_translations(priv.gadget);
} }
} };
// return response object // return response object
return response; return response;
} }
); );
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment