diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/web/static/css/default/style.css | 40 | ||||
| -rw-r--r-- | module/web/static/css/omniwindow.css | 72 | ||||
| -rw-r--r-- | module/web/static/js/default.js | 4 | ||||
| -rw-r--r-- | module/web/static/js/utils/animations.js | 36 | ||||
| -rw-r--r-- | module/web/static/js/views/modal/modalView.js | 76 | ||||
| -rw-r--r-- | module/web/static/js/views/packageTreeView.js | 3 | ||||
| -rw-r--r-- | module/web/static/js/views/packageView.js | 16 | ||||
| -rw-r--r-- | module/web/templates/default/base.html | 50 | 
8 files changed, 170 insertions, 127 deletions
diff --git a/module/web/static/css/default/style.css b/module/web/static/css/default/style.css index fb33875a7..b871c1d3d 100644 --- a/module/web/static/css/default/style.css +++ b/module/web/static/css/default/style.css @@ -279,4 +279,44 @@ footer h2 {      line-height: 16px;
      margin: 0;
      padding-bottom: 6px;
 +}
 +
 +
 +/*
 +   Modal Dialogs
 +*/
 +.modal {
 +    top: 100px;
 +    left: 50%;
 +    position: fixed;
 +    width: 300px;
 +    height: 300px;
 +    margin-left: -150px;
 +    z-index: 100;
 +    background: #fcfcfc;
 +    padding: 10px 20px 20px;
 +    box-shadow: 0 0 30px rgba(0,0,0,0.2);
 +}
 +
 +#modal-overlay {
 +    content: " ";
 +    height: 100%;
 +    width: 100%;
 +    position: absolute;
 +    left: 0;
 +    top: 0; /* TODO change gradient at all browser */
 +    background: -moz-radial-gradient(center, ellipse cover,  rgba(236,208,66,0) 0%, rgba(40,119,171,0.9) 100%);
 +    /*background: -moz-radial-gradient(center, ellipse cover,  rgba(127,127,0,0) 0%, rgba(127,127,127,0.9) 100%);*/
 +    background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(127,127,127,0)), color-stop(100%,rgba(127,127,127,0.9)));
 +    background: -webkit-radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%);
 +    background: -o-radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%);
 +    background: -ms-radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%);
 +    background: radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%);
 +    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#007f7f7f', endColorstr='#e67f7f7f',GradientType=1 );
 +    z-index: 50;
 +    opacity: 0;
 +}
 +
 +.modal-closed {
 +    display: none;
  }
\ No newline at end of file diff --git a/module/web/static/css/omniwindow.css b/module/web/static/css/omniwindow.css deleted file mode 100644 index 4947ea3c7..000000000 --- a/module/web/static/css/omniwindow.css +++ /dev/null @@ -1,72 +0,0 @@ -/* Default class for an overlay */ -.ow-overlay { -     content: " "; -     height: 100%; -     width: 100%; -     position: absolute; -     left: 0; -     top: 0; /* TODO change gradient at all browser */ -     background: -moz-radial-gradient(center, ellipse cover,  rgba(236,208,66,0) 0%, rgba(40,119,171,0.9) 100%); -     /*background: -moz-radial-gradient(center, ellipse cover,  rgba(127,127,0,0) 0%, rgba(127,127,127,0.9) 100%);*/ -     background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(127,127,127,0)), color-stop(100%,rgba(127,127,127,0.9))); -     background: -webkit-radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%); -     background: -o-radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%); -     background: -ms-radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%); -     background: radial-gradient(center, ellipse cover,  rgba(127,127,127,0) 0%,rgba(127,127,127,0.9) 100%); -     filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#007f7f7f', endColorstr='#e67f7f7f',GradientType=1 ); -     z-index: 50; - } - -/* Default class for both hidden overlay and modal window */ -.ow-closed { -    display: none; -} - -/* Default class for modal window */ -.modal { -    left: 50%; -    position: fixed; -    width: 300px; -    height: 300px; -    z-index: 100; -    background-color: #ffffff; -} - -/* Animations */ -.window-container { -    background: #fcfcfc; -    opacity: 0; -    width: 500px; -    padding: 10px 20px 20px; -    text-align: left; -    border-radius: 3px; -    box-shadow: 0px 0px 30px rgba(0,0,0,0.2); -    -webkit-transition: 0.4s ease-out; -    -moz-transition: 0.4s ease-out; -    -ms-transition: 0.4s ease-out; -    -o-transition: 0.4s ease-out; -    transition: 0.4s ease-out; -} - -.zoomin { -    -webkit-transform:  scale(1.2); -    -moz-transform:  scale(1.2); -    -ms-transform:  scale(1.2); -    transform:  scale(1.2); -} - -.zoomout { -    -webkit-transform:  scale(0.7); -    -moz-transform:  scale(0.7); -    -ms-transform:  scale(0.7); -    transform:  scale(0.7); -} - -.window-container-visible { -    -webkit-transform:  scale(1); -    -moz-transform:  scale(1); -    -ms-transform:  scale(1); -    transform:  scale(1); -    opacity: 1; -} - diff --git a/module/web/static/js/default.js b/module/web/static/js/default.js index bed397712..d4330da81 100644 --- a/module/web/static/js/default.js +++ b/module/web/static/js/default.js @@ -8,6 +8,7 @@ require.config({          jquery:"libs/jquery-1.8.0",          jqueryui:"libs/jqueryui",          flot:"libs/jquery.flot.min", +        transit:"libs/jquery.transit-0.1.3",          omniwindow: "libs/jquery.omniwindow",          underscore:"libs/lodash-0.5.2", @@ -26,12 +27,13 @@ require.config({              exports:"Backbone"  //attaches "Backbone" to the window object          },          "flot" : ["jquery"], +        "transit" : ["jquery"],          "omniwindow" : ["jquery"]      } // end Shim Configuration  }); -define('default', ['jquery', 'backbone', 'routers/defaultRouter', 'views/headerView', 'views/packageTreeView'], +define('default', ['jquery', 'backbone', 'routers/defaultRouter', 'views/headerView', 'views/packageTreeView', 'utils/animations'],      function ($, Backbone, DefaultRouter, HeaderView, TreeView) { diff --git a/module/web/static/js/utils/animations.js b/module/web/static/js/utils/animations.js new file mode 100644 index 000000000..9b1448f61 --- /dev/null +++ b/module/web/static/js/utils/animations.js @@ -0,0 +1,36 @@ +define(['jquery', 'underscore', 'transit'], function(jQuery, _) { + +    // Overwrite common animations with transitions +    jQuery.each({ +        fadeIn: { opacity: "show" }, +        fadeOut: { opacity: "hide" } +    }, function(name, props) { +        jQuery.fn[ name ] = function(speed, easing, callback) { +            return this.transition(props, speed, easing, callback); +        }; +    }); + +    jQuery.fn._transit = jQuery.fn.transit; + +    // Over riding transit plugin to support hide and show +    // Props retains it properties across multiple calls, therefore props.show value is introduced +    jQuery.fn.transit = jQuery.fn.transition = function(props, duration, easing, callback) { +        var self = this; +        var cb = callback; +        if (props && (props.opacity === 'hide' || (props.opacity === 0 && props.show === true))) { +            props.opacity = 0; +            props.show = true; + +            callback = function() { +                self.css({display: 'none'}); +                if (typeof cb === 'function') { cb.apply(self); } +            }; +        } else if (props && (props.opacity === 'show' || (props.opacity === 1 && props.show === true))) { +            props.opacity = 1; +            props.show = true; +            this.css({display: 'block'}); +        } + +        return this._transit(props, duration, easing, callback); +    }; +});
\ No newline at end of file diff --git a/module/web/static/js/views/modal/modalView.js b/module/web/static/js/views/modal/modalView.js new file mode 100644 index 000000000..efc0cc3cb --- /dev/null +++ b/module/web/static/js/views/modal/modalView.js @@ -0,0 +1,76 @@ +define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone, _) { + +    return Backbone.View.extend({ + +        events: { + +        }, + +        dialog: null, + +        initialize: function() { + +        }, + +        render: function() { +            this.$el.addClass('modal'); +            this.$el.addClass('modal-closed'); +            this.$el.append(this.renderContent()); +            this.$el.css({opacity: 0, scale: 0.7}); +            $("body").append(this.el); + +            this.dialog = this.$el.omniWindow({ +                overlay: { +                    selector: '#modal-overlay', +                    hideClass: 'modal-closed', +                    animations: { +                        hide: function(subjects, internalCallback) { +                            subjects.overlay.fadeOut(400, function() { +                                internalCallback(subjects); +                            }); +                        }, +                        show: function(subjects, internalCallback) { +                            subjects.overlay.fadeIn(250, function() { +                                internalCallback(subjects); +                            }); +                        }}}, +                modal: { +                    hideClass: 'modal-closed', +                    animations: { +                        hide: function(subjects, internalCallback) { +                            subjects.modal.transition({opacity: 'hide', scale: 0.7}, 250, function() { +                                internalCallback(subjects); +                            }); +                        }, + +                        show: function(subjects, internalCallback) { +                            subjects.modal.transition({opacity: 'show', scale: 1}, 250, function() { +                                internalCallback(subjects); +                            }); +                        }} +                }}); + +            return this; +        }, +        renderContent: function() { +            return $('<h1>Dialog</h1>'); +        }, + +        show: function() { +            if (this.dialog === null) +                this.render(); + +            this.dialog.trigger('show'); +        }, + +        hide: function() { +            this.dialog.trigger('hide'); +        }, + +        destroy: function() { +            this.$el.remove(); +            this.dialog = null; +        } + +    }); +});
\ No newline at end of file diff --git a/module/web/static/js/views/packageTreeView.js b/module/web/static/js/views/packageTreeView.js index 91768ec04..e26924db2 100644 --- a/module/web/static/js/views/packageTreeView.js +++ b/module/web/static/js/views/packageTreeView.js @@ -12,8 +12,6 @@ define(['jquery', 'backbone', 'underscore', 'models/TreeCollection', 'views/pack              },              initialize: function() { -                _.bindAll(this, 'render'); -                  this.tree = new TreeCollection();              }, @@ -26,7 +24,6 @@ define(['jquery', 'backbone', 'underscore', 'models/TreeCollection', 'views/pack              },              render: function() { -                  this.$el.html("<br>");                  var packs = this.tree.get('packages'), diff --git a/module/web/static/js/views/packageView.js b/module/web/static/js/views/packageView.js index a2e0abf31..b820b9ba8 100644 --- a/module/web/static/js/views/packageView.js +++ b/module/web/static/js/views/packageView.js @@ -1,4 +1,5 @@ -define(['jquery', 'backbone', 'underscore', 'views/fileView'], function($, Backbone, _, fileView) { +define(['jquery', 'backbone', 'underscore', 'views/fileView', 'views/modal/modalView'], +    function($, Backbone, _, fileView, modalView) {      // Renders a single package item      return Backbone.View.extend({ @@ -6,9 +7,12 @@ define(['jquery', 'backbone', 'underscore', 'views/fileView'], function($, Backb          tagName: 'li',          events: {              'click .load': 'load', -            'click .delete': 'delete' +            'click .delete': 'delete', +            'click .show': 'show'          }, +        modal: null, +          initialize: function() {              this.model.on('change', this.render, this);              this.model.on('remove', this.unrender, this); @@ -18,6 +22,7 @@ define(['jquery', 'backbone', 'underscore', 'views/fileView'], function($, Backb              this.$el.html('Package ' + this.model.get('pid') + ': ' + this.model.get('name'));              this.$el.append($('<a class="load" href="#"> Load</a>'));              this.$el.append($('<a class="delete" href="#"> Delete</a>')); +            this.$el.append($('<a class="show" href="#"> Show</a>'));              if (this.model.isLoaded()) {                  var ul = $('<ul></ul>'); @@ -39,6 +44,13 @@ define(['jquery', 'backbone', 'underscore', 'views/fileView'], function($, Backb          delete: function() {              this.model.destroy(); +        }, + +        show: function() { +            if (this.modal === null) +                this.modal = new modalView(); + +            this.modal.show();          }      }); diff --git a/module/web/templates/default/base.html b/module/web/templates/default/base.html index f1f779760..e4c606efa 100644 --- a/module/web/templates/default/base.html +++ b/module/web/templates/default/base.html @@ -13,7 +13,6 @@      <link href="static/css/default/style.css" rel="stylesheet" type="text/css" media="screen"/>
      <link href="static/css/black-tie/jquery-ui-1.8.22.custom.css" rel="stylesheet" type="text/css" media="screen"/>
      <link href="static/css/jquery.qtip.min.css" rel="stylesheet" type="text/css" media="screen"/>
 -    <link href="static/css/omniwindow.css" rel="stylesheet" type="text/css" media="screen"/>
      <script type="text/javascript" data-main="static/js/default" src="static/js/libs/require-2.0.6.js"></script>
      <script>
 @@ -69,10 +68,6 @@              <p>{{ msg }}</p>
          {% endfor %}
 -        <div class="modal window-container zoomout ow-closed">
 -            <h1>Close me!</h1>
 -            <a class='close-button' href='#'>X</a>
 -        </div>
          {% block content %}
          {% endblock content %}
      </div>
 @@ -211,50 +206,7 @@          });
      });
  </script>
 -<script type="text/javascript">
 -    $(function () {
 -        var dialog = $('div.modal').omniWindow({
 -            overlay:{
 -                animations:{
 -                    hide:function (subjects, internalCallback) {
 -                        subjects.overlay.fadeOut(400, function () {
 -                            internalCallback(subjects); // call internal callback
 -                        })
 -                    },
 -                    show:function (subjects, internalCallback) {
 -                        subjects.overlay.fadeIn(250, function () {
 -                            internalCallback(subjects); // call internal callback
 -                        });
 -                    }}},
 -            modal:{
 -                animations:{
 -                    hide:function (subjects, internalCallback) {
 -                        subjects.modal.removeClass('window-container-visible');
 -                        subjects.modal.fadeOut(250, function () {
 -                            internalCallback(subjects); // call internal callback
 -                        });
 -                    },
 -
 -                    show:function (subjects, internalCallback) {
 -                        subjects.modal.fadeIn(0, function () {
 -                            subjects.modal.addClass('window-container-visible');
 -                            internalCallback(subjects); // call internal callback
 -                        });
 -                    }}
 -            }});
 -
 -        $('#dialog_open').click(function (e) {
 -            e.preventDefault();
 -            dialog.trigger('show');
 -        });
 -
 -        $('.close-button').click(function (e) {
 -            e.preventDefault();
 -            dialog.trigger('hide');
 -        });
 -    });
 -</script>
 -<div class="ow-overlay ow-closed"></div>
 +<div id="modal-overlay" class="modal-closed"></div>
  {% block deferred %}
  {% endblock deferred %}
  </body>
  | 
