RT-Extension-LifecycleUI

 view release on metacpan or  search on metacpan

static/js/lifecycleui-editor.js  view on Meta::CPAN

            templates[type] = fn;
            Handlebars.registerPartial('lifecycleui_' + type, fn);
        });
        return templates;
    };

    Editor.prototype._refreshInspector = function (refreshContent) {
        var self = this;
        var lifecycle = self.lifecycle;
        var inspector = self.inspector;
        var node = self.inspectorNode;

        var params = { lifecycle: lifecycle };

        var header = inspector.find('.header');
        header.html(self.templates.header(params));

        var refreshedNode = header;
        if (refreshContent) {
            var type = node ? node._type : 'canvas';
            params[type] = node;
            inspector.find('.content').html(self.templates[type](params));
            refreshedNode = inspector;
        }

        refreshedNode.find(".toplevel").addClass('sf-menu sf-js-enabled sf-shadow').supersubs().superfish({ speed: 'fast' });

        refreshedNode.find(':checkbox[data-show-hide]').each(function () {
            var field = jQuery(this);
            var selector = field.data('show-hide');
            var flip = field.data('show-hide-flip') ? true : false;

            var toggle = function () {
                if ((field.prop('checked') ? true : false) != flip) {
                    jQuery(selector).show();
                } else {
                    jQuery(selector).hide();
                }
            }
            field.change(function (e) { toggle() });
            toggle();
        });

        refreshedNode.find('option[data-show-hide]').each(function () {
            var option = jQuery(this);
            var field = option.closest('select');
            var selector = option.data('show-hide');
            var flip = option.data('show-hide-flip') ? true : false;

            var toggle = function () {
                if ((field.val() == option.val()) != flip) {
                    jQuery(selector).show();
                } else {
                    jQuery(selector).hide();
                }
            }
            field.change(function (e) { toggle() });
            toggle();
        });

        refreshedNode.find(".combobox input.combo-text").each(function () {
            ComboBox_Load(this.id);
        });
    };

    Editor.prototype.setInspectorContent = function (node) {
        this.inspectorNode = node;
        this._refreshInspector(true);
    };

    Editor.prototype.bindInspectorEvents = function () {
        var self = this;
        var lifecycle = self.lifecycle;
        var inspector = self.inspector;

        inspector.on('change', ':input', function () {
            var node = jQuery(this);
            var value;

            if (node.is('.combo-list')) {
                value = node.val();
                node = node.closest('.combobox').find('.combo-text');
            }
            else if (node.is(':checkbox')) {
                value = node[0].checked;
            }
            else {
                value = node.val();
            }

            var field = node.attr('name');

            var action = node.closest('li.action');
            if (action.length) {
                var action = lifecycle.itemForKey(action.data('key'));
                lifecycle.updateItem(action, field, value);
            }
            else if (inspector.find('.canvas').length) {
                lifecycle.update(field, value);
            }
            else {
                lifecycle.updateItem(self.inspectorNode, field, value);
            }
            self.renderDisplay();
        });

        inspector.on('click', 'button.change-color', function (e) {
            e.preventDefault();
            var inputContainer = jQuery(this).closest('.color-control');
            var field = inputContainer.data('field');
            var pickerContainer = jQuery('tr.color-widget[data-field="'+field+'"]');
            var picker = pickerContainer.find('.color-picker');
            jQuery(this).remove();

            var skipUpdateCallback = 0;
            var farb = jQuery.farbtastic(picker, function (newColor) {
                if (skipUpdateCallback) {
                    return;
                }
                inputContainer.find('.current-color').val(newColor);
                lifecycle.updateItem(self.inspectorNode, field, newColor, true);
                self.renderDisplay();
            });
            farb.setColor(self.inspectorNode[field]);

            // see farbtastic's implementation
            jQuery('*', picker).mousedown(function () {
                self.lifecycle.beginChangingColor();
            });

            var input = jQuery('<input class="current-color" size=8 maxlength=7>');
            inputContainer.find('.current-color').replaceWith(input);
            input.on('input', function () {
                var newColor = input.val();
                if (newColor.match(/^#[a-fA-F0-9]{6}$/)) {
                    skipUpdateCallback = 1;
                    farb.setColor(newColor);
                    skipUpdateCallback = 0;

                    lifecycle.updateItem(self.inspectorNode, field, newColor);
                    self.renderDisplay();
                }



( run in 1.441 second using v1.01-cache-2.11-cpan-39bf76dae61 )