Commit 5056db75 authored by Sven Franck's avatar Sven Franck

first commit (old renderjs)

parents
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title></title>
<!-- <link rel="stylesheet" href="js/main.css"> -->
<script data-main="js/main.js" src="js/libs/require/require.js"></script>
</head>
<body>
<div data-role="page" id="basket" data-gadget="modules/basket/basket.html" data-gadget-module="basket"></div>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
/* global CSS */
@media (max-width: 40em) {
/* convert button with text to icon-only */
/*
.ui-controlgroup .morph {
width: auto;
height: 100%;
}
.ui-controlgroup .morph .ui-btn-inner {
height: 20px;
padding: .6em 20px .6em 20px;
}
.ui-controlgroup-horizontal .morph .ui-btn-inner {
width: 11px;
}
.ui-header .ui-controlgroup .morph .ui-btn-inner,
.ui-footer .ui-controlgroup .morph .ui-btn-inner {
height: 16px;
padding: .55em 11px .5em 11px;
}
*/
.morph.ui-btn-icon-left:after {
left: 0.2em;/* ui-btn-icon-left:after */
}
.morph.ui-btn-icon-right:after {
left: 0.2em;/* ui-btn-icon-right:after */
}
.morph.ui-btn-icon-left,
.morph.ui-btn-icon-right {
height: 1.5em;
text-indent: -9999px;
white-space: nowrap !important;
width: 1.5em;
padding: 0;
border-radius: 1em;
font-size: 16px;
-webkit-border-radius: 1em;
}
}
/* upper boundaries */
@media (min-width: 45em) {
.ui-controlgroup .morph {
padding: 0 .75em;
}
}
/* ranges */
@media (max-width: 20em) {
.ui-controlgroup .morph {
padding: 0 .25em;
}
}
@media (min-width: 20.01em) and (max-width: 30em) {
.ui-controlgroup .morph {
padding: 0 .4em;
}
}
@media (min-width: 30.01em) and (max-width: 40em) {
.ui-controlgroup .morph {
padding: 0 .75em;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9.
* 2. Remove excess padding in IE 8/9.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title></title>
<!-- <link rel="stylesheet" href="js/main.css"> -->
<script data-main="js/main.js" src="js/libs/require/require.js"></script>
</head>
<body>
<div data-role="page" id="details" data-gadget="modules/details/details.html" data-gadget-module="details"></div>
</body>
</html>
\ No newline at end of file
img/1.jpg

105 KB

img/2.jpg

102 KB

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title></title>
<!-- <link rel="stylesheet" href="js/main.css"> -->
<script data-main="js/main.js" src="js/libs/require/require.js"></script>
</head>
<body>
<div id="index" data-role="page" data-gadget="modules/index/index.html" data-gadget-module="index"></div>
</body>
</html>
define([], function () {
"use strict";
var priv = {};
var that = {};
// ========================================================================
// ATTRIBUTES
// ========================================================================
// document
priv.doc = $.mobile.document;
// settings > retrieve from JIO later
priv.settings = {};
priv.settings.language_default = "en-EN";
priv.settings.language_current = priv.settings.language_default;
priv.settings.language_selector = "translate";
priv.settings.language_set = false;
// ========================================================================
// FLAGS
// ========================================================================
// first page loaded
priv.pageWrapLoaded;
// ========================================================================
// INTERNAL METHODS
// ========================================================================
//
// add page header and footer (meta/scripts) to first page loaded (only!)
// @method wrapFirstPage
//
priv.wrapFirstPage = function () {
// TODO: clean this up
priv.doc.on('pagecreate.pageWrap', 'div.ui-page', function () {
if (priv.pageWrapLoaded === undefined) {
priv.pageWrapLoaded = true;
priv.doc.off('.pageWrap');
// var widgetsForThisRequest = [
// "text!../gadgets/pageheader.html",
// "text!../gadgets/pagefooter.html"
// ],
// target = [$('head'),$('body')];
//
//
// require(
// widgetsForThisRequest,
// function( /* dynamic */ ) {
// var i, widget, template_target;
//
// for ( i = 0; i < widgetsForThisRequest.length; i++){
// template_target = target[i];
// // if customization based on user data required (add logo/img urls, etc)
// // it should be done here with widget being a string that can be
// // modified with replace method
// widget = arguments[i];
// template_target.append( widget );
// }
// }
// );
}
});
};
// ============================ RenderJs related ========================
//
// get elements inside a popup
// @method getElements
// @param {object} gadget to search for recursive gadgets
//
priv.getElements = function (gadget, elements) {
return gadget.dom.find(elements);
};
//
// prefix element id with the parent id to allow instantiation
// @method prefixId
// @param {string} id > of current gadget/element
// @param {object} parent gadget
// @return {string} new id for gadget/element
//
priv.prefixElement = function (current_id, parent_id) {
return parent_id + "__" + current_id;
};
//
// set Attributes passed through data-gadget-properties
// @method setAttributesOnGadgetElements
// @param {object} gadget
// @param {properties} properties to set on the gadget
//
priv.setAttributesOnGadgetElements = function (gadget, properties) {
var key, values, i, object, method;
for (key in properties) {
if (properties.hasOwnProperty(key)) {
values = properties[key];
switch (key) {
case "_links":
// TODO: set dictionary here!
break;
case "_config":
// interim: create a fake dictionary
gadget[key] = values;
break;
case "_elements":
for (i = 0; i < values.length; i += 1) {
object = values[i];
method = object[1];
gadget.dom.find("." + object[0])[method](
object[2], method === "attr" ? object[3] : null
);
}
break;
}
}
}
};
//
// renderJs initializer and jQuery Mobile handler
// @method initializeRenderJs
//
priv.initializeRenderJs = function () {
// TODO: remove if possible
// TODO: try to call "create" earlier (FOUC on first time load)
priv.doc.on('pagebeforeshow', 'div.ui-page', function () {
var page = $(this);
// need to call this every time a page is shown...
RenderJs.init();
RenderJs.bindReady(function () {
var gadget = RenderJs.GadgetIndex.getGadgetById(page.attr('id'));
if (gadget.isEnhanced() === false) {
page.trigger("create");
gadget.setEnhanced(true);
}
});
})
.on('pageremove', 'div.ui-page', function () {
var page = $(this),
pageGadget;
// if the page is a gadget itself, it needs to be reset here
if (page.attr("data-gadget") !== undefined) {
pageGadget = RenderJs.GadgetIndex.getGadgetById(page.attr('id'));
pageGadget.setReady(false);
RenderJs.GadgetIndex.unregisterGadget(pageGadget);
}
// remove gadgets when removing pages
page.find("div[data-gadget]").each(function (i, el) {
var regularGadget = $(el);
if (regularGadget.is('.main-interactor') === false) {
RenderJs.GadgetIndex.getGadgetById(regularGadget.attr('id')).remove();
}
});
})
};
priv.setScreenDimensions = function () {
var spec = {};
// breakpoints should be optionable?
spec.lowerTresh = 320;
spec.upperThresh = 720;
spec.framed = "medium";
if ($.mobile.media("screen and (max-width:20em)") ||
($.mobile.browser.oldIE && $(window).width() < o.lowerThresh)) {
spec.framed = "small";
} else if ($.mobile.media("screen and (min-width:45em)") ||
($.mobile.browser.oldIE && $(window).width() >= o.upperThresh )) {
spec.framed = "large";
}
priv.settings.screen_format = spec.framed;
};
//
// setup global application parameters
// @method setupGlobalParameters
//
// TODO: this would be the place to load JSON configuration settings
priv.setupGlobalParameters = function () {
// screen dimensions
priv.setScreenDimensions();
// initialize renderJs
priv.initializeRenderJs();
};
//
// initialize application
// @method initialize
//
priv.initialize = function () {
// > set up globals
priv.setupGlobalParameters()
// > add <head>er and footer to first page only
priv.wrapFirstPage();
// initialize JQM
// TODO: is there a better way with requireJS/renderJs?
if ($.mobile.autoInitializePage === false) {
$.mobile.initializePage();
}
};
// ========================================================================
// PUBLIC METHODS => window.App.method()
// ========================================================================
//
// prefix instance ids and handle/forward JSON properties passed to gadget
// @method renderGadgets
// @param {object} gadget to be rendered
//
that.renderGadgets = function (gadget) {
var spec = {};
spec.gadget_id = gadget.dom.attr('id');
spec.gadget_props = gadget["state"];
spec.gadget_cleaned_id = spec.gadget_id.split("__").slice(-1)[0];
spec.propsToSet;
spec.fwd = [];
spec.i;
// JSON property API
// "state": [
// {"gadget-id" {"element": ["method", "key/value", "value"] } },
// ...
// ]
if (spec.gadget_props !== undefined) {
for (spec.i = 0; spec.i < spec.gadget_props.length; spec.i += 1) {
spec.propsToSet = spec.gadget_props[spec.i][spec.gadget_cleaned_id];
if (spec.propsToSet !== undefined) {
// properties for this gadget
priv.setAttributesOnGadgetElements(gadget, spec.propsToSet);
} else {
// fwd to new data-gadget-property object
spec.fwd.push(spec.gadget_props[spec.i]);
}
}
// should we clean up?
gadget.dom.removeAttr("data-gadget-property");
}
priv.getElements(
gadget, "a[data-rel='popup'], a[data-rel='panel']"
).each(function () {
spec.href = this.getAttribute('href').replace("#", '');
spec.prefixedHref = priv.prefixElement(spec.href, spec.gadget_id);
this.setAttribute("href", "#" + spec.prefixedHref);
// not nice... prevents panel getting prefix__prefix__gadget_id
// TODO: find better way
if (this.getAttribute("data-rel") !== "panel") {
document
.getElementById(spec.href)
.setAttribute("id", spec.prefixedHref);
}
});
priv.getElements(gadget, "div[data-gadget]").each(function () {
spec.id = this.getAttribute('id');
spec.prefixId = priv.prefixElement(spec.id, spec.gadget_id);
if (spec.fwd.length > 0) {
this.setAttribute(
'data-gadget-property', JSON.stringify({
"state": spec.fwd
})
);
}
this.setAttribute('id', spec.prefixId);
});
};
// ========================================================================
// INITIALIZE
// ========================================================================
that.initialize = priv.initialize;
that.settings = priv.settings;
// ========================================================================
// PUBLISH APP
// ========================================================================
// return public methods to main.js
return that;
});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
(function ($, document) {
"use strict";
$(document).on("mobileinit", function () {
$.mobile.autoInitializePage = false;
});
}(jQuery, document));
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/** @license
* RequireJS plugin for loading JSON files
* - depends on Text plugin and it was HEAVILY "inspired" by it as well.
* Author: Miller Medeiros
* Version: 0.3.1 (2013/02/04)
* Released under the MIT license
*/
define(['text'], function(text){
var CACHE_BUST_QUERY_PARAM = 'bust',
CACHE_BUST_FLAG = '!bust',
jsonParse = (typeof JSON !== 'undefined' && typeof JSON.parse === 'function')? JSON.parse : function(val){
return eval('('+ val +')'); //quick and dirty
},
buildMap = {};
function cacheBust(url){
url = url.replace(CACHE_BUST_FLAG, '');
url += (url.indexOf('?') < 0)? '?' : '&';
return url + CACHE_BUST_QUERY_PARAM +'='+ Math.round(2147483647 * Math.random());
}
//API
return {
load : function(name, req, onLoad, config) {
if ( config.isBuild && (config.inlineJSON === false || name.indexOf(CACHE_BUST_QUERY_PARAM +'=') !== -1) ) {
//avoid inlining cache busted JSON or if inlineJSON:false
onLoad(null);
} else {
text.get(req.toUrl(name), function(data){
if (config.isBuild) {
buildMap[name] = data;
onLoad(data);
} else {
onLoad(jsonParse(data));
}
},
onLoad.error, {
accept: 'application/json'
}
);
}
},
normalize : function (name, normalize) {
//used normalize to avoid caching references to a "cache busted" request
return (name.indexOf(CACHE_BUST_FLAG) === -1)? name : cacheBust(name);
},
//write method based on RequireJS official text plugin by James Burke
//https://github.com/jrburke/requirejs/blob/master/text.js
write : function(pluginName, moduleName, write){
if(moduleName in buildMap){
var content = buildMap[moduleName];
write('define("'+ pluginName +'!'+ moduleName +'", function(){ return '+ content +';});\n');
}
}
};
});
This diff is collapsed.
$.fn.validVal.customValidations = { 'nl_postalcode': function( val ) { var v = val.split( ' ' ).join( '' ); // Empty value is OK, required-test will follow if clas="required". if ( v.length == 0 ) { return true; } // NL postalcode should be formatted as: "1234AB". if ( v.length != 6 || isNaN( v.charAt( 0 ) ) || isNaN( v.charAt( 1 ) ) || isNaN( v.charAt( 2 ) ) || isNaN( v.charAt( 3 ) ) || !isNaN( v.charAt( 4 ) ) || !isNaN( v.charAt( 5 ) ) ) { return false; } else { return true; } } };
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/* scope CSS? */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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