code: function WidgetModel(Class, overrides) {
          var defaults = {
            title: 'Widget',
            name: Class.name,
            attrs: Class.attrs,
            dataAttrName: Class.dataAttrName,
            dataModelType: Class.dataModelType,
            dataModelArgs: Class.dataModelArgs, // used in data model constructor, not serialized
            //AW Need deep copy of options to support widget options editing
            dataModelOptions: Class.dataModelOptions,
            settingsModalOptions: Class.settingsModalOptions,
            onSettingsClose: Class.onSettingsClose,
            onSettingsDismiss: Class.onSettingsDismiss,
            style: Class.style
          };
          overrides = overrides || {};
          angular.extend(this, angular.copy(defaults), overrides);
          this.style = this.style || { width: '33%' };
          this.setWidth(this.style.width);
  
          if (Class.templateUrl) {
            this.templateUrl = Class.templateUrl;
          } else if (Class.template) {
            this.template = Class.template;
          } else {
            var directive = Class.directive || Class.name;
            this.directive = directive;
          }
        }
docs: constructor for widget model instances