0
MIDCOM_STATIC_URL: 'midcom-static',
0
- MIDCOM_PAGE_PREFIX: '/'
0
+ MIDCOM_PAGE_PREFIX: '/',
0
+ enable_watchers: false,
0
registered_components: {}
0
init: function(config) {
0
$.midcom.config = $.extend({}, $.midcom.config, config || {});
0
$.midcom.registered_components = {};
0
+ $.midcom.logger.init($.midcom.config.force_static_logger || true);
0
+ if ($.midcom.config.enable_watchers) {
0
+ $.midcom.watcher.init();
0
+ $.midcom._inited = true;
0
+ $.midcom.logger.log('jsmidcom inited with config ' + $.midcom.helpers.pretty_print($.midcom.config));
0
+ setTimeout("jQuery.midcom.logger.debug('this is debug message')", 1000);
0
+ setTimeout("jQuery.midcom.logger.warning('this is warning message')", 2000);
0
+ setTimeout("jQuery.midcom.logger.error('this is error message')", 3000);
0
+ $.midcom.events.signals.trigger('jsmidcom::init-ready');
0
- register_component: function(name, handler) {
0
+ update_config: function(config) {
0
+ $.midcom.config = $.extend({}, $.midcom.config, config || {});
0
+ $.midcom.logger.log('jsmidcom config updated to ' + $.midcom.helpers.pretty_print($.midcom.config));
0
+ register_component: function(name, handler) {
0
if (typeof $.midcom.registered_components[name] == 'undefined') {
0
- $.midcom.registered_components[name] = handler;
0
+ if (! $.midcom._inited) {
0
+ $.midcom.events.signals.listen('jsmidcom::init-ready', $.midcom._register_component, [name, handler], false);
0
+ $.midcom._register_component(name, handler);
0
+ _register_component: function(name, handler) {
0
+ $.midcom.logger.log('registering component: '+name);
0
+ $.midcom.registered_components[name] = handler;
0
+ $.midcom.events.signals = {
0
+ trigger: function(signal, data) {
0
+ if ( $.midcom.events.signals._listeners === null
0
+ || typeof $.midcom.events.signals._listeners[signal] == 'undefined')
0
+ if ( typeof data == 'undefined'
0
+ || typeof data != 'object')
0
+ $.each($.midcom.events.signals._listeners[signal], function(i,listener){
0
+ if (typeof listener != 'object') {
0
+ if (typeof listener.func == 'function') {
0
+ if (typeof listener.args != 'undefined') {
0
+ listener.func.apply(listener.func, args);
0
+ if (! listener.keep) {
0
+ $.midcom.events.signals._listeners[signal][i] = null;
0
+ listen: function(signal, listener, data, keep) {
0
+ if ($.midcom.events.signals._listeners === null) {
0
+ $.midcom.events.signals._listeners = {};
0
+ if (typeof $.midcom.events.signals._listeners[signal] == 'undefined') {
0
+ $.midcom.events.signals._listeners[signal] = [];
0
+ if (typeof keep == 'undefined') {
0
+ $.midcom.events.signals._listeners[signal].push(lstnr);
0
+ _out: function(msg, type) {
0
+ if (typeof type == 'undefined') {
0
+ msg = $.midcom.logger.row_num + ": " + msg;
0
+ $.midcom.logger.row_num += 1;
0
+ if ( typeof window['console'] == 'undefined'
0
+ || $.midcom.logger.force_static)
0
+ $.midcom.logger._static(msg, type);
0
+ $.midcom.logger._console(msg, type);
0
+ _console: function(msg, type) {
0
+ if (! $.midcom.config.debug) {
0
+ if (typeof console[type] != 'undefined') {
0
+ _static: function(msg, type) {
0
+ if ($.midcom.logger._static_holder == null) {
0
+ $.midcom.logger._generate_static();
0
+ $.midcom.logger._static_holder.trigger('add_message', [msg, type]);
0
+ _generate_static: function() {
0
+ $.midcom.logger._static_holder = $('<div id="jsmidcom_logger" />').hide();
0
+ $.midcom.logger._static_holder.appendTo('body');
0
+ if (! $.midcom.config.debug) {
0
+ $.midcom.logger._static_holder.show();
0
+ var header = $('<div class="jsmidcom_logger_header" />').html('Logger');
0
+ header.appendTo($.midcom.logger._static_holder);
0
+ var messages_visible = true;
0
+ header.bind('click', function(e){
0
+ if (messages_visible) {
0
+ messages_visible = false;
0
+ messages_visible = true;
0
+ var messages = $('<div class="jsmidcom_logger_messages" />');
0
+ messages.appendTo($.midcom.logger._static_holder);
0
+ $.midcom.logger._static_holder.bind('add_message', function(evt, msg, type){
0
+ var message = $('<div class="jsmidcom_logger_message" />')
0
+ 'jsmidcom_logger_message_' + type
0
+ message.prependTo(messages);
0
+ message.fadeIn('normal');
0
+ $.extend($.midcom.logger, {
0
+ init: function(force_static) {
0
+ if ( typeof force_static
0
+ $.midcom.logger.force_static = true;
0
+ $.midcom.logger._out(msg, 'log');
0
+ debug: function(msg) {
0
+ $.midcom.logger._out(msg, 'debug');
0
+ warning: function(msg) {
0
+ $.midcom.logger._out(msg, 'warning');
0
+ error: function(msg) {
0
+ $.midcom.logger._out(msg, 'error');
0
+ $.extend($.midcom.watcher, {
0
+ $.midcom.watcher.targets = [];
0
+ register: function(url, callback) {
0
- * uses xmlObjectifier from http://www.terracoder.com/
documentation.html0
+ * uses xmlObjectifier from http://www.terracoder.com/
0
$.midcom.helpers.xml = {
0
+ $.midcom.helpers.json = {};
0
+ $.extend($.midcom.helpers.json, {
0
+ * Parses and evaluates JSON string to Javascript
0
+ * @param {String} json_str JSON String
0
+ * @returns Parsed JSON string or false on failure
0
+ parse: function (json_str) {
0
+ var re = new RegExp('[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]');
0
+ return !(re.test(json_str.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + json_str + ')');
0
+ * Parses Javascript to JSON
0
+ * @param {Mixed} item Javascript to be parsed
0
+ * @param {String} type of the Javascript item to be parsed (Optional)
0
+ * @returns JSON string
0
+ convert: function(item, item_type) {
0
+ var a = ['['], b, f, i, l = x.length, v;
0
+ for (i = 0; i < l; i += 1) {
0
+ if (typeof v == 'string') {
0
+ return isFinite(x) ? String(x) : 'null';
0
+ if (x instanceof Array) {
0
+ var a = ['{'], b, f, i, v;
0
+ if (typeof v == 'string') {
0
+ a.push(s.str(i), ':', v);
0
+ if (/["\\\x00-\x1f]/.test(x)) {
0
+ x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
0
+ Math.floor(c / 16).toString(16) +
0
+ (c % 16).toString(16);
0
+ var itemtype = item_type || typeof item;
0
+ if (is_a(item, Array)) {
0
+ throw ("Unknown type for $.midcom.helpers.json.convert");
0
+ * Renders pretty printed version from given value
0
+ * Original pretty_print function by Damien Katz <damien_katz@yahoo.com>
0
+ * Modified to work with Ajatus and jsMidCOM by Jerry Jalava <jerry.jalava@gmail.com>
0
+ * @param {Mixed} val Value to render
0
+ * @param {Number} indent Current indent level (Default: 4)
0
+ * @param {String} linesep Line break to be used (Default: "\n")
0
+ * @param {Number} depth Current line depth (Default: 1)
0
+ * @returns Pretty printed value
0
+ $.midcom.helpers.pretty_print = function(val, indent, linesep, depth) {
0
+ var indent = typeof indent != 'undefined' ? indent : 4;
0
+ var linesep = typeof linesep != 'undefined' ? linesep : "\n";
0
+ var depth = typeof depth != 'undefined' ? depth : 1;
0
+ var propsep = linesep.length ? "," + linesep : ", ";
0
+ for (var i = 0; i < indent * depth; i++) {
0
+ return $.midcom.helpers.json.convert(val);
0
+ if (val.constructor == Date) {
0
+ return $.midcom.helpers.json.convert(val);
0
+ if (val.constructor == Array) {
0
+ for (var index = 0; index < val.length; index++) {
0
+ buf.push(index > 0 ? propsep : linesep);
0
+ tab, $.midcom.helpers.pretty_print(val[index], indent, linesep, depth + 1)
0
+ buf.push(linesep, tab.substr(indent))
0
+ for (var key in val) {
0
+ if (! val.hasOwnProperty(key)) {
0
+ buf.push(index > 0 ? propsep : linesep);
0
+ tab, $.midcom.helpers.json.convert(key), ": ",
0
+ $.midcom.helpers.pretty_print(val[key], indent, linesep, depth + 1)
0
+ buf.push(linesep, tab.substr(indent));
0
$.midcom.services = {};
0
+ * Javascript extensions
0
+ function is_a(source, constructor) {
0
+ while (source != null) {
0
+ if (source == constructor.prototype) {
0
+ source = source.__proto__;
0
\ No newline at end of file
Comments
No one has commented yet.