2013-11-02 22:24:59 +04:00

304 lines
13 KiB
JavaScript

/*
Loads all js files via require.js
*/
define(function () {
function loadCss(url) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
document.getElementsByTagName("head")[0].appendChild(link);
};
return {
loadCss: loadCss,
getConfig: function (baseUrl) {
var
params = this.getParams(),
f = params.f,
c = params.c;
var
jqueryui_ver = '1.10.3',
// jqueryui_ver = '1.9.1',
bs2_ver = '232',
bs3_ver = '300',
//path aliases
paths = {
"bootstrap": "../test/libs/bootstrap"+(f === 'bootstrap2' ? bs2_ver : bs3_ver),
// "jqueryui": "../test/libs/jquery-ui-"+jqueryui_ver+".custom",
"jqueryui_js": "../test/libs/jquery-ui-"+jqueryui_ver+".custom/js/jquery-ui-"+jqueryui_ver+".custom",
"dateui_js": "inputs/dateui/jquery-ui-datepicker/js/jquery-ui-"+jqueryui_ver+".custom",
"poshytip": "../test/libs/poshytip",
"test": "../test"
},
shim = {
'containers/editable-container': {
deps: ['require', 'editable-form/editable-form-utils', 'editable-form/editable-form'],
init: function(require) {
loadCss(require.toUrl("./editable-container.css"));
}
},
//inline container
'containers/editable-inline': ['containers/editable-container'],
'element/editable-element': {
deps: ['require'], //here should be dynamically added container
init: function(require) {
loadCss(require.toUrl("./editable-element.css"));
}
},
/*
common inputs
*/
'editable-form/editable-form': {
deps: ['require',
'inputs/text',
'inputs/textarea',
'inputs/select',
'inputs/checklist',
'inputs/html5types',
'inputs/combodate/combodate',
'inputs-ext/address/address',
'inputs/select2/select2'],
init: function(require) {
loadCss(require.toUrl("./editable-form.css"));
}
},
'inputs/select': ['inputs/list'],
'inputs/checklist': ['inputs/list'],
'inputs/list': ['inputs/abstract'],
'inputs/text': ['inputs/abstract'],
'inputs/textarea': ['inputs/abstract'],
'inputs/abstract': ['editable-form/editable-form-utils'],
'inputs/html5types': ['inputs/text'],
'inputs/combodate/combodate': ['inputs/abstract', 'inputs/combodate/lib/combodate', 'inputs/combodate/lib/moment.min'],
//moment 1.7.2
//'inputs/combodate/combodate': ['inputs/abstract', 'inputs/combodate/lib/combodate', 'inputs/combodate/lib/moment.min.1.7.2'],
'inputs/typeahead': ['inputs/list'],
/* ------------------------------
bootstrap
------------------------------ */
'bootstrap/js/bootstrap': {
deps: ['require'],
init: function(require) {
loadCss(require.toUrl("../css/bootstrap.css"));
//add responsive css for bs2
if(f === 'bootstrap2') {
loadCss(require.toUrl("../css/bootstrap-responsive.css"));
}
}
},
'editable-form/editable-form-bootstrap': [
'editable-form/editable-form',
'bootstrap/js/bootstrap'
],
'editable-form/editable-form-bootstrap3': [
'editable-form/editable-form',
'bootstrap/js/bootstrap'
],
'containers/editable-popover': [
'containers/editable-inline',
'bootstrap/js/bootstrap'
],
'containers/editable-popover3': [
'containers/editable-inline',
'bootstrap/js/bootstrap'
],
'inputs/date/date': {
deps: ['require',
'bootstrap/js/bootstrap',
'inputs/abstract',
'inputs/date/bootstrap-datepicker/js/bootstrap-datepicker'],
init: function(require) {
loadCss(require.toUrl("./bootstrap-datepicker/css/datepicker.css"));
}
},
'inputs/datetime/datetime': {
deps: ['require',
'bootstrap/js/bootstrap',
'inputs/abstract',
'inputs/datetime/bootstrap-datetimepicker/js/bootstrap-datetimepicker'],
init: function(require) {
loadCss(require.toUrl("./bootstrap-datetimepicker/css/datetimepicker.css"));
}
},
//wysihtml5
// 'inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.min': ['inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/wysihtml5-0.3.0.min'],
'inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2': ['inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/wysihtml5-0.3.0'],
'inputs-ext/wysihtml5/wysihtml5': {
deps: ['require',
'bootstrap/js/bootstrap',
'inputs/abstract',
// 'inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.min'],
'inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2'],
init: function(require) {
loadCss(require.toUrl("./bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.css"));
//loadCss(require.toUrl("./bootstrap-wysihtml5-0.0.2/wysiwyg-color.css"));
}
},
//select2
'inputs/select2/select2': {
deps: ['require',
'inputs/select2/lib/select2',
'inputs/abstract'],
init: function(require) {
loadCss(require.toUrl("./lib/select2.css"));
if (f === 'bootstrap2' || f === 'bootstrap3') {
loadCss(require.toUrl("./lib/select2-bootstrap.css"));
}
}
},
//datefield
'inputs/date/datefield': ['inputs/date/date'],
//datetimefield
'inputs/datetime/datetimefield': ['inputs/datetime/datetime'],
/* ------------------------------
jqueryui
------------------------------ */
'jqueryui_js': {
deps: ['require'],
//temp: test simultaneous jquery-ui with bootstrap
//deps: ['require', 'bootstrap/js/bootstrap'],
init: function(require) {
//loadCss(require.toUrl("../css/redmond/jquery-ui-1.10.1.custom.css"));
loadCss(require.toUrl("../test/libs/jquery-ui-"+jqueryui_ver+".custom/css/redmond/jquery-ui-"+jqueryui_ver+".custom.css"));
}
},
'editable-form/editable-form-jqueryui': [
'editable-form/editable-form',
'jqueryui_js'
],
'containers/editable-tooltip': [
'containers/editable-inline',
'jqueryui_js'
],
'inputs/dateui/dateui': ['inputs/abstract'],
'inputs/dateui/dateuifield': ['inputs/dateui/dateui'],
/* ------------------------------
plain
------------------------------ */
'containers/editable-poshytip': [
'containers/editable-inline',
'poshytip/jquery.poshytip'
],
'poshytip/jquery.poshytip': {
deps: ['require'],
init: function(require) {
loadCss(require.toUrl("./tip-yellowsimple/tip-yellowsimple.css"));
}
},
'dateui_js': {
deps: ['require'],
init: function(require) {
//loadCss(require.toUrl('../css/redmond/jquery-ui-'+jqueryui_ver+'.custom.css'));
loadCss(require.toUrl('inputs/dateui/jquery-ui-datepicker/css/redmond/jquery-ui-'+jqueryui_ver+'.custom.css'));
}
},
/* ------------------------------
inputs-ext
------------------------------ */
'inputs-ext/address/address': {
deps: ['require', 'inputs/abstract'],
init: function(require) {
loadCss(require.toUrl("./address.css"));
}
},
'inputs-ext/typeaheadjs/typeaheadjs': {
deps: [
'require',
'inputs/text',
'inputs-ext/typeaheadjs/lib/typeahead'
],
init: function(require) {
loadCss(require.toUrl("./lib/typeahead.js-bootstrap.css"));
}
}
};
/*
modify shim for bootstrap, jqueryui or plain
*/
if(f === 'bootstrap3') {
//bootstrap 3
shim['editable-form/editable-form'].deps = shim['editable-form/editable-form'].deps.concat(
[
'inputs/date/datefield',
'inputs/datetime/datetimefield',
'inputs-ext/typeaheadjs/typeaheadjs'
//'inputs-ext/wysihtml5/wysihtml5',
//'inputs/typeahead'
]);
shim['element/editable-element'].deps.push('editable-form/editable-form-bootstrap3');
shim['element/editable-element'].deps.push('containers/editable-popover3');
} else if(f === 'bootstrap2') {
//bootstrap 2
shim['editable-form/editable-form'].deps = shim['editable-form/editable-form'].deps.concat(
[
'inputs/date/datefield',
'inputs/datetime/datetimefield',
'inputs-ext/wysihtml5/wysihtml5',
'inputs/typeahead'
]);
shim['element/editable-element'].deps.push('editable-form/editable-form-bootstrap');
shim['element/editable-element'].deps.push('containers/editable-popover');
} else if(f === 'jqueryui') {
//jqueryui
shim['editable-form/editable-form'].deps.push('inputs/dateui/dateuifield');
shim['element/editable-element'].deps.push('editable-form/editable-form-jqueryui');
shim['element/editable-element'].deps.push('containers/editable-tooltip');
} else {
//plain
shim['editable-form/editable-form'].deps.push('inputs/dateui/dateuifield');
shim['inputs/dateui/dateui'].push('dateui_js');
shim['element/editable-element'].deps.push('containers/editable-poshytip');
}
/*
return requirejs config
*/
return {
baseUrl: baseUrl,
paths: paths,
shim: shim
};
},
getParams: function() {
var url = window.location.href, f, c;
if(url.match(/f=jqueryui/i)) {
f = 'jqueryui';
} else if(url.match(/f=plain/i)) {
f = 'plain';
} else if(url.match(/f=bootstrap3/i) || url.match(/f=bs3/i)) {
f = 'bootstrap3';
} else {
f = 'bootstrap2';
}
c = url.match(/c=inline/i) ? 'inline' : 'popup';
return {f: f, c: c};
}
}
});