_ = require 'kraken/util/underscore'
-{ BaseModel, BaseView,
-} = require 'kraken/base'
{ Field, FieldList, FieldView, Scaffold,
} = require 'kraken/scaffold'
-IGNORED_TAGS = exports.IGNORED_TAGS = <[ callback deprecated debugging ]>
-
-
+/**
+ * @class A set of tags.
+ */
class exports.TagSet extends Array
tags : {}
toString: -> "TagSet(length=#{@length}, values=[\"#{@join '", "'}\"])"
+
+/**
+ * @namespace All known tags, for mapping consistently onto colors.
+ */
KNOWN_TAGS = exports.KNOWN_TAGS = new TagSet()
+
/**
- * Field with graph-option-specific handling for validation, parsing, tags, etc.
+ * @class Field with chart-option-specific handling for validation, parsing, tags, etc.
*/
-GraphOption = exports.GraphOption = Field.extend do # {{{
- ctorName : 'GraphOption'
+ChartOption = exports.ChartOption = Field.extend do # {{{
+ ctorName : 'ChartOption'
+ IGNORED_TAGS : <[ callback deprecated debugging ]>
+
initialize : ->
# console.log "#this.initialize!"
# Ignore functions/callbacks and, ahem, hidden tags.
type = @get 'type', '' .toLowerCase()
tags = @get 'tags', []
- if _.str.include(type, 'function') or _.intersection(tags, IGNORED_TAGS).length
+ if _.str.include(type, 'function') or _.intersection(tags, @IGNORED_TAGS).length
@set 'ignore', true
# }}}
-GraphOptionList = exports.GraphOptionList = FieldList.extend do # {{{
- ctorName : 'GraphOptionList'
- model : GraphOption
+
+/**
+ * @class List of ChartOption fields.
+ */
+ChartOptionList = exports.ChartOptionList = FieldList.extend do # {{{
+ ctorName : 'ChartOptionList'
+ model : ChartOption
/**
* Override to omit defaults from URL.
_ = require 'kraken/util/underscore'
-{BaseView} = require 'kraken/base'
{ Field, FieldList, FieldView, Scaffold,
} = require 'kraken/scaffold'
-{ GraphOption, GraphOptionList, TagSet, KNOWN_TAGS,
-} = require 'kraken/graph/graph-model'
+{ ChartOption, ChartOptionList,
+} = require 'kraken/chart/chart-option-model'
DEBOUNCE_RENDER = exports.DEBOUNCE_RENDER = 100ms
/**
- * The view for a single configurable option.
+ * @class View for a single configurable option in a chart type.
*/
-GraphOptionView = exports.GraphOptionView = FieldView.extend do # {{{
+ChartOptionView = exports.ChartOptionView = FieldView.extend do # {{{
# __bind__ : <[ onClick ]>
- ctorName : 'GraphOptionView'
+ ctorName : 'ChartOptionView'
tagName : 'div'
className : 'field option'
- template : require 'kraken/template/graph-option'
+ template : require 'kraken/template/chart-option'
isCollapsed : true
/**
- *
+ * @class View for configuring a chart type.
*/
-GraphOptionsScaffold = exports.GraphOptionsScaffold = Scaffold.extend do # {{{
- ctorName : 'GraphOptionsScaffold'
+ChartOptionScaffold = exports.ChartOptionScaffold = Scaffold.extend do # {{{
+ ctorName : 'ChartOptionScaffold'
tagName : 'form'
className : 'options scaffold'
- template : require 'kraken/template/graph-scaffold'
- collectionType : GraphOptionList
- subviewType : GraphOptionView
+ template : require 'kraken/template/chart-scaffold'
+ collectionType : ChartOptionList
+ subviewType : ChartOptionView
fields : '.fields'
# GraphView will set this
sortBy: 'category'
/**
- * Add a GraphOption to this scaffold, rerendering the isotope
+ * Add a ChartOption to this scaffold, rerendering the isotope
* layout after collapse events.
*/
addOne: (field) ->
_ = require 'kraken/util/underscore'
-op = require 'kraken/util/op'
{EventEmitter} = require 'events'
{Parsers, ParserMixin} = require 'kraken/util/parser'
/**
* @class Specification for an option.
*/
-class exports.ChartOption
+class exports.ChartTypeOption
SPEC_KEYS : <[ name type default desc tags examples ]>
name : null
(@chartType, @spec) ->
- throw new Error('Each ChartOption requires a name!') unless @spec.name
+ throw new Error('Each ChartTypeOption requires a name!') unless @spec.name
for k of @SPEC_KEYS
v = @spec[k]
@[k] = v if v?
@tags or= []
- @parse = @lookup.getParser @type
+ @parse = @chartType.getParser @type
parse : Parsers.parseString
*/
class exports.ChartType extends EventEmitter
/**
- * Ordered ChartOption objects.
- * @type ChartOption[]
+ * Ordered ChartTypeOption objects.
+ * @type ChartTypeOption[]
*/
options_ordered : null
/**
- * Map of option name to ChartOption objects.
- * @type { name:ChartOption, ... }
+ * Map of option name to ChartTypeOption objects.
+ * @type { name:ChartTypeOption, ... }
*/
options : null
* name, type, default, description (etc) of a chart option.
*/
(@name, options) ->
- @options_ordered = _.map options, (opt) ~> new ChartOption this, opt
+ @options_ordered = _.map options, (opt) ~> new ChartTypeOption this, opt
@options = _.synthesize @options_ordered, -> [it.name, it]
ChartType.register this
/**
- * @returns {ChartOption} Get an option's spec by name.
+ * @returns {ChartTypeOption} Get an option's spec by name.
*/
get: (name, def) ->
@options[name] or def
_ = require 'kraken/util/underscore'
-{ ChartType, ChartOption,
+{ ChartType, ChartTypeOption,
} = require 'kraken/chart/chart-type'
-chart_type = require 'kraken/chart/chart-type'
-dygraphs = require 'kraken/chart/dygraphs'
-exports import chart_type import dygraphs
+chart_type = require 'kraken/chart/chart-type'
+dygraphs = require 'kraken/chart/dygraphs'
+models = require 'kraken/chart/chart-option-model'
+views = require 'kraken/chart/chart-option-view'
+exports import chart_type import dygraphs import models import views
-models = require 'kraken/graph/graph-model'
-views = require 'kraken/graph/graph-view'
-exports import models import views
+# models = require 'kraken/graph/graph-model'
+# views = require 'kraken/graph/graph-view'
+# exports import models import views
{ _, op,
} = require 'kraken/util'
-{ ChartType, DygraphsChartType,
-} = require 'kraken/chart'
{ BaseView, BaseModel, BaseList,
} = require 'kraken/base'
{ Field, FieldList, FieldView, Scaffold,
} = require 'kraken/scaffold'
-{ GraphOption, GraphOptionList, GraphOptionView,
- GraphOptionsScaffold, TagSet,
-} = require 'kraken/graph'
+{ ChartType, DygraphsChartType,
+ ChartOption, ChartOptionList, TagSet,
+ ChartOptionView, ChartOptionScaffold,
+} = require 'kraken/chart'
{ VisView, VisModel, VisList,
} = require 'kraken/vis'
op = require 'kraken/util/op'
backbone = require 'kraken/util/backbone'
parser = require 'kraken/util/parser'
-exports import { root, _, op, backbone, parser, }
+Cascade = require 'kraken/util/cascade'
+exports import { root, _, op, backbone, parser, Cascade, }
# HashSet = require 'kraken/util/hashset'
# BitString = require 'kraken/util/bitstring'
Cascade = require 'kraken/util/cascade'
{ ChartType,
} = require 'kraken/chart'
-{ BaseModel, BaseView, BaseList,
+{ BaseModel, BaseList,
} = require 'kraken/base'
root = do -> this
_ = require 'kraken/util/underscore'
{ BaseView,
} = require 'kraken/base'
-{ Field, FieldList, FieldView, Scaffold
-} = require 'kraken/scaffold'
-{ GraphOptionsScaffold, GraphOption, GraphOptionList, DEBOUNCE_RENDER,
-} = require 'kraken/graph'
+{ ChartOptionScaffold, ChartOption, ChartOptionList, DEBOUNCE_RENDER,
+} = require 'kraken/chart'
{ VisModel,
} = require 'kraken/vis/vis-model'
@viewport = @$el.find '.viewport'
- @scaffold = new GraphOptionsScaffold
+ @scaffold = new ChartOptionScaffold
@$el.find '.graph-options-pane' .append @scaffold.el
@scaffold.collection.reset that if o.graph_spec
Seq = require 'seq'
Backbone = require 'backbone'
-{ _, op,
+{ _, op, Cascade,
} = require 'kraken/util'
-Cascade = require 'kraken/util/cascade'
-
-{ ChartLibrary, DygraphsLibrary,
-} = require 'kraken/chart'
{ BaseView, BaseModel, BaseList,
} = require 'kraken/base'
{ Field, FieldList, FieldView, Scaffold,
} = require 'kraken/scaffold'
-{ GraphOption, GraphOptionList, GraphOptionView,
- GraphOptionsScaffold, TagSet,
-} = require 'kraken/graph'
+{ ChartType, DygraphsChartType,
+ ChartOption, ChartOptionList, TagSet,
+ ChartOptionView, ChartOptionScaffold,
+} = require 'kraken/chart'
{ VisView, VisModel, VisList,
} = require 'kraken/vis'
# for opt of root.CHART_OPTIONS_SPEC
# opts[opt.name] = opt.default
- dyglib = new DygraphsLibrary CHART_OPTIONS_SPEC
+ dyglib = new DygraphsChartType CHART_OPTIONS_SPEC
# TODO: create a preset manager
# Remove chart options from data so we don't have to deepcopy
- cascade
- index
- base
+ - scaffold:
+ - scaffold-model
+ - scaffold-view
+ - index
- chart:
- chart-type
- dygraphs
+ - chart-option-model
+ - chart-option-view
- index
- template:
+ - chart-option.jade
+ - chart-scaffold.jade
- graph.jade
- - graph-option.jade
- - graph-scaffold.jade
- - scaffold:
- - scaffold-model
- - scaffold-view
- - index
- - graph:
- - graph-model
- - graph-view
- - index
+ # - graph:
+ # - graph-model
+ # - graph-view
+ # - index
- vis:
- vis-model
- vis-view