mirror of https://github.com/artf/grapesjs.git
5 changed files with 163 additions and 86 deletions
@ -1,79 +1,165 @@ |
|||
/** |
|||
* @class StyleManager |
|||
* @param {Object} Configurations |
|||
* |
|||
* @return {Object} |
|||
* */ |
|||
define(function(require) { |
|||
/** |
|||
* @class StyleManager |
|||
* @param {Object} Configurations |
|||
* |
|||
* @return {Object} |
|||
* */ |
|||
function StyleManager(config) |
|||
{ |
|||
var c = config || {}, |
|||
defaults = require('./config/config'), |
|||
Sectors = require('./model/Sectors'), |
|||
SectorsView = require('./view/SectorsView'); |
|||
|
|||
var StyleManager = function(config){ |
|||
var c = config || {}, |
|||
defaults = require('./config/config'), |
|||
Sectors = require('./model/Sectors'), |
|||
SectorsView = require('./view/SectorsView'); |
|||
|
|||
for (var name in defaults) { |
|||
if (!(name in c)) |
|||
c[name] = defaults[name]; |
|||
} |
|||
|
|||
this.sectors = new Sectors(c.sectors); |
|||
var obj = { |
|||
collection : this.sectors, |
|||
target : c.target, |
|||
config : c, |
|||
var sectors = new Sectors(c.sectors); |
|||
var obj = { |
|||
collection: sectors, |
|||
target: c.target, |
|||
config: c, |
|||
}; |
|||
|
|||
this.SectorsView = new SectorsView(obj); |
|||
} |
|||
var SectView = new SectorsView(obj); |
|||
|
|||
StyleManager.prototype = { |
|||
return { |
|||
|
|||
/** |
|||
* Get all sectors |
|||
* |
|||
* @return {Sectors} |
|||
/** |
|||
* Add new sector to the collection. If the sector with the same id already exists, |
|||
* that one will be returned |
|||
* @param {string} id Sector id |
|||
* @param {Object} sector Object representing sector |
|||
* @param {string} [sector.name=''] Sector's label |
|||
* @param {Boolean} [sector.open=true] Indicates if the sector should be opened |
|||
* @param {Array<Object>} [sector.properties=[]] Array of properties |
|||
* @return {Sector} Added Sector |
|||
* @example |
|||
* var sector = styleManager.addSector('mySector',{ |
|||
* name: 'My sector', |
|||
* open: true, |
|||
* properties: [{ name: 'My property'}] |
|||
* }); |
|||
* */ |
|||
getSectors : function() |
|||
{ |
|||
return this.sectors; |
|||
addSector: function(id, sector){ |
|||
var result = this.getSector(id); |
|||
if(!result){ |
|||
sector.id = id; |
|||
result = sectors.add(sector); |
|||
} |
|||
return result; |
|||
}, |
|||
|
|||
/** |
|||
* Get sector by id |
|||
* @param {String} id Object id |
|||
* |
|||
* @return {Sector}|{null} |
|||
* @param {string} id Sector id |
|||
* @return {Sector|null} |
|||
* @example |
|||
* var sector = styleManager.getSector('mySector'); |
|||
* */ |
|||
getSector : function(id) |
|||
{ |
|||
var res = this.sectors.where({id: id}); |
|||
getSector: function(id){ |
|||
var res = sectors.where({id: id}); |
|||
return res.length ? res[0] : null; |
|||
}, |
|||
|
|||
/** |
|||
* Add new Sector |
|||
* @param {String} id Object id |
|||
* @param {Object} obj Object data |
|||
* |
|||
* @return {Sector} |
|||
* Get all sectors |
|||
* @return {Sectors} Collection of sectors |
|||
* */ |
|||
addSector : function(id, obj) |
|||
{ |
|||
if(!this.getSector(id)){ |
|||
obj.id = id; |
|||
return this.sectors.add(obj); |
|||
} |
|||
getSectors: function(){ |
|||
return sectors; |
|||
}, |
|||
|
|||
/** |
|||
* Render sectors |
|||
* |
|||
* @return {String} |
|||
* Add property to the sector identified by id |
|||
* @param {string} sectorId Sector id |
|||
* @param {Object} property Property object |
|||
* @param {string} [property.name=''] Name of the property |
|||
* @param {string} [property.property=''] CSS property, eg. `min-height` |
|||
* @param {string} [property.type=''] Type of the property: integer | radio | select | color | file | composite | stack |
|||
* @param {Array<string>} [property.units=[]] Unit of measure available, eg. ['px','%','em']. Only for integer type |
|||
* @param {string} [property.unit=''] Default selected unit from `units`. Only for integer type |
|||
* @param {string} [property.defaults=''] Default value |
|||
* @param {string} [property.info=''] Some description |
|||
* @param {string} [property.icon=''] Class name. If exists no text will be displayed |
|||
* @param {Boolean} [property.preview=false] Show layers preview. Only for stack type |
|||
* @param {string} [property.functionName=''] Indicates if value need to be wrapped in some function, for istance `transform: rotate(90deg)` |
|||
* @param {Array<Object>} [property.properties=[]] Nested properties for composite and stack type |
|||
* @param {Array<Object>} [property.layers=[]] Layers for stack properties |
|||
* @param {Array<Object>} [property.list=[]] List of possible options for radio and select types |
|||
* @return {Property|null} Added Property or `null` in case sector doesn't exist |
|||
* @example |
|||
* var property = styleManager.addProperty('mySector',{ |
|||
* name: 'Minimum height', |
|||
* property: 'min-height', |
|||
* type: 'select', |
|||
* defaults: '100px', |
|||
* list: [{ |
|||
* value: '100px', |
|||
* name: '100', |
|||
* },{ |
|||
* value: '200px', |
|||
* name: '200', |
|||
* }], |
|||
* }); |
|||
*/ |
|||
addProperty: function(sectorId, property){ |
|||
var prop = null; |
|||
var sector = this.getSector(sectorId); |
|||
|
|||
if(sector) |
|||
prop = sector.get('properties').add(property); |
|||
|
|||
return prop; |
|||
}, |
|||
|
|||
/** |
|||
* Get property by its CSS name and sector id |
|||
* @param {string} sectorId Sector id |
|||
* @param {string} name CSS property name, eg. 'min-height' |
|||
* @return {Property|null} |
|||
* @example |
|||
* var property = styleManager.getProperty('mySector','min-height'); |
|||
*/ |
|||
getProperty: function(sectorId, name){ |
|||
var prop = null; |
|||
var sector = this.getSector(sectorId); |
|||
|
|||
if(sector) |
|||
prop = sectors.get('properties').where({property: name}); |
|||
|
|||
return prop; |
|||
}, |
|||
|
|||
/** |
|||
* Get properties of the sector |
|||
* @param {string} sectorId Sector id |
|||
* @return {Properties} Collection of properties |
|||
* @example |
|||
* var properties = styleManager.getProperties('mySector'); |
|||
*/ |
|||
getProperties: function(sectorId){ |
|||
var props = null; |
|||
var sector = this.getSector(sectorId); |
|||
|
|||
if(sector) |
|||
props = sectors.get('properties'); |
|||
|
|||
return props; |
|||
}, |
|||
|
|||
/** |
|||
* Render sectors and properties |
|||
* @return {HTMLElement} |
|||
* */ |
|||
render : function(){ |
|||
return this.SectorsView.render().$el; |
|||
render: function(){ |
|||
return SectView.render().el; |
|||
}, |
|||
|
|||
}; |
|||
}; |
|||
|
|||
return StyleManager; |
|||
|
|||
@ -1,32 +1,24 @@ |
|||
define(['backbone'], |
|||
function(Backbone) { |
|||
/** |
|||
* @class Property |
|||
* */ |
|||
|
|||
return Backbone.Model.extend({ |
|||
|
|||
|
|||
defaults: { |
|||
name : '', //Name of the property
|
|||
property: '', //CSS property, eg. min-height
|
|||
type: '', //Type of the property: integer | radio | select | color | file | composite | stack
|
|||
units: [], //Unit of measure available, eg. ['px','%','em']
|
|||
unit: '', //Unit selected
|
|||
defaults: '', //Default value
|
|||
info: '', //Description HTML
|
|||
value: '', //Selected value of the property
|
|||
icon: '', //If exists, a custom class will be attached and no text will be displayed
|
|||
preview: false, //Show layers preview. Available only for stack property
|
|||
functionName: '', //Indicates if value need to be wrapped in some function, for istance: transform: rotate(90deg)
|
|||
properties : {}, //For composite properties
|
|||
layers : {}, //For stack properties
|
|||
list: [], //If exits, ignore type attribute ad display as multi-optional property
|
|||
//Any element could be as:
|
|||
// value : 'auto',
|
|||
// icon: 'auto',
|
|||
// defaults : true,
|
|||
// style: '', //custom style to the value of propriety
|
|||
// name:'' //alternative view to value
|
|||
name : '', |
|||
property: '', |
|||
type: '', |
|||
units: [], |
|||
unit: '', |
|||
defaults: '', |
|||
info: '', |
|||
value: '', //Selected value of the property (?)
|
|||
icon: '', |
|||
preview: false, |
|||
functionName: '', |
|||
properties: {}, |
|||
layers: {}, |
|||
list: [], |
|||
} |
|||
|
|||
}); |
|||
|
|||
}); |
|||
}); |
|||
@ -1,15 +1,14 @@ |
|||
define(['backbone'], |
|||
function(Backbone) { |
|||
/** |
|||
* @class Sector |
|||
* */ |
|||
|
|||
return Backbone.Model.extend({ |
|||
|
|||
|
|||
defaults: { |
|||
name : '', |
|||
open: true, |
|||
properties : {}, |
|||
id: '', |
|||
name: '', |
|||
open: true, |
|||
properties : [], |
|||
} |
|||
|
|||
}); |
|||
}); |
|||
|
|||
}); |
|||
}); |
|||
Loading…
Reference in new issue