Skip to content

Commit

Permalink
Use gulp; also added package.json
Browse files Browse the repository at this point in the history
  • Loading branch information
Marco Braak committed Oct 1, 2014
1 parent 5a77289 commit a47e9ad
Show file tree
Hide file tree
Showing 21 changed files with 4,996 additions and 2,249 deletions.
4 changes: 3 additions & 1 deletion README.md
@@ -1,4 +1,6 @@
[![Travis Status](https://secure.travis-ci.org/mbraak/jqTree.svg)](http://travis-ci.org/mbraak/jqTree) [![Coverage Status](https://img.shields.io/coveralls/mbraak/jqTree.svg)](https://coveralls.io/r/mbraak/jqTree) [![Bower version](https://badge.fury.io/bo/jqtree.svg)](http://badge.fury.io/bo/jqtree)
[![Travis Status](https://secure.travis-ci.org/mbraak/jqTree.svg)](http://travis-ci.org/mbraak/jqTree) [![Coverage Status](https://img.shields.io/coveralls/mbraak/jqTree.svg)](https://coveralls.io/r/mbraak/jqTree)

[![Bower version](https://badge.fury.io/bo/jqtree.svg)](http://badge.fury.io/bo/jqtree) [![NPM version](https://badge.fury.io/js/jqtree.svg)](http://badge.fury.io/js/jqtree)

#jqTree

Expand Down
2 changes: 0 additions & 2 deletions build

This file was deleted.

27 changes: 27 additions & 0 deletions gulpfile.coffee
@@ -0,0 +1,27 @@
gulp = require 'gulp'
coffee = require 'gulp-coffee'
coffeeify = require 'gulp-coffeeify'
exec = require('child_process').exec

gulp.task 'jqtree', ->
gulp.src './src/tree.jquery.coffee'
.pipe coffeeify()
.pipe gulp.dest('./')

gulp.task 'lib', ->
gulp.src './src/*.coffee'
.pipe coffee(bare: true)
.pipe gulp.dest('./lib')

gulp.task 'build_test', ->
gulp.src './src/test.js'
.pipe coffeeify()
.pipe gulp.dest('./test')

gulp.task 'jekyll', (cb) ->
exec 'jekyll build', (err, stdout, stderr) ->
console.log(stdout)
console.log(stderr)
cb(err)

gulp.task 'default', ['jqtree', 'build_test', 'lib']
2 changes: 2 additions & 0 deletions gulpfile.js
@@ -0,0 +1,2 @@
require('coffee-script/register');
require('./gulpfile.coffee');
19 changes: 19 additions & 0 deletions package.json
@@ -0,0 +1,19 @@
{
"name": "jqtree",
"version": "0.22.0",
"description": "Tree widget for jQuery",
"main": "lib/tree.jquery.js",
"repository": {
"type": "git",
"url": "https://github.com/mbraak/jqtree"
},
"dependencies": {
"jquery": ">1.5"
},
"devDependencies": {
"coffee-script": "1.8.0",
"gulp": "3.8.8",
"gulp-coffee": "2.2.0",
"gulp-coffeeify": "0.1.2"
}
}
54 changes: 5 additions & 49 deletions src/drag_and_drop_handler.coffee
@@ -1,3 +1,7 @@
node_module = require './node'
Position = node_module.Position


class DragAndDropHandler
constructor: (tree_widget) ->
@tree_widget = tree_widget
Expand Down Expand Up @@ -459,52 +463,4 @@ class DragElement
@$element.remove()


class GhostDropHint
constructor: (node, $element, position) ->
@$element = $element

@node = node
@$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>')

if position == Position.AFTER
@moveAfter()
else if position == Position.BEFORE
@moveBefore()
else if position == Position.INSIDE
if node.isFolder() and node.is_open
@moveInsideOpenFolder()
else
@moveInside()

remove: ->
@$ghost.remove()

moveAfter: ->
@$element.after(@$ghost)

moveBefore: ->
@$element.before(@$ghost)

moveInsideOpenFolder: ->
$(@node.children[0].element).before(@$ghost)

moveInside: ->
@$element.after(@$ghost)
@$ghost.addClass('jqtree-inside')


class BorderDropHint
constructor: ($element) ->
$div = $element.children('.jqtree-element')
width = $element.width() - 4

@$hint = $('<span class="jqtree-border"></span>')
$div.append(@$hint)

@$hint.css(
width: width
height: $div.height() - 4
)

remove: ->
@$hint.remove()
module.exports = DragAndDropHandler
10 changes: 10 additions & 0 deletions src/elements_renderer.coffee
@@ -1,3 +1,10 @@
node_element = require './node_element'
NodeElement = node_element.NodeElement

util = require './util'
html_escape = util.html_escape


class ElementsRenderer
constructor: (tree_widget) ->
@tree_widget = tree_widget
Expand Down Expand Up @@ -192,3 +199,6 @@ class ElementsRenderer
return document.createTextNode(div.innerHTML)
else
return $(value)[0]


module.exports = ElementsRenderer
5 changes: 4 additions & 1 deletion src/key_handler.coffee
Expand Up @@ -117,4 +117,7 @@ class KeyHandler
if not last_child.hasChildren() or not last_child.is_open
return last_child
else
return @getLastChild(last_child)
return @getLastChild(last_child)


module.exports = KeyHandler
7 changes: 6 additions & 1 deletion src/mouse.widget.coffee
Expand Up @@ -2,6 +2,9 @@
This widget does the same a the mouse widget in jqueryui.
###

SimpleWidget = require './simple.widget'


class MouseWidget extends SimpleWidget
@is_mouse_handled = false

Expand Down Expand Up @@ -173,4 +176,6 @@ class MouseWidget extends SimpleWidget

return @_handleMouseUp(
@_getPositionInfo(touch)
)
)

module.exports = MouseWidget
9 changes: 3 additions & 6 deletions src/node.coffee
@@ -1,6 +1,3 @@
@Tree = {}
$ = @jQuery

Position =
getName: (position) ->
return Position.strings[position - 1]
Expand All @@ -18,8 +15,6 @@ Position.NONE = 4

Position.strings = ['before', 'after', 'inside', 'none']

@Tree.Position = Position

class Node
constructor: (o, is_root=false, node_class=Node) ->
@setData(o)
Expand Down Expand Up @@ -386,4 +381,6 @@ class Node
return result


@Tree.Node = Node
module.exports =
Node: Node
Position: Position
144 changes: 144 additions & 0 deletions src/node_element.coffee
@@ -0,0 +1,144 @@
node = require './node'
Position = node.Position


class NodeElement
constructor: (node, tree_widget) ->
@init(node, tree_widget)

init: (node, tree_widget) ->
@node = node
@tree_widget = tree_widget

if not node.element
node.element = @tree_widget.element

@$element = $(node.element)

getUl: ->
return @$element.children('ul:first')

getSpan: ->
return @$element.children('.jqtree-element').find('span.jqtree-title')

getLi: ->
return @$element

addDropHint: (position) ->
if position == Position.INSIDE
return new BorderDropHint(@$element)
else
return new GhostDropHint(@node, @$element, position)

select: ->
@getLi().addClass('jqtree-selected')

deselect: ->
@getLi().removeClass('jqtree-selected')


class FolderElement extends NodeElement
open: (on_finished, slide=true) ->
if not @node.is_open
@node.is_open = true
$button = @getButton()
$button.removeClass('jqtree-closed')
$button.html('')
$button.append(@tree_widget.renderer.opened_icon_element.cloneNode())

doOpen = =>
@getLi().removeClass('jqtree-closed')
if on_finished
on_finished()

@tree_widget._triggerEvent('tree.open', node: @node)

if slide
@getUl().slideDown('fast', doOpen)
else
@getUl().show()
doOpen()

close: (slide=true) ->
if @node.is_open
@node.is_open = false
$button = @getButton()
$button.addClass('jqtree-closed')
$button.html('')
$button.append(@tree_widget.renderer.closed_icon_element.cloneNode())

doClose = =>
@getLi().addClass('jqtree-closed')

@tree_widget._triggerEvent('tree.close', node: @node)

if slide
@getUl().slideUp('fast', doClose)
else
@getUl().hide()
doClose()

getButton: ->
return @$element.children('.jqtree-element').find('a.jqtree-toggler')

addDropHint: (position) ->
if not @node.is_open and position == Position.INSIDE
return new BorderDropHint(@$element)
else
return new GhostDropHint(@node, @$element, position)


class BorderDropHint
constructor: ($element) ->
$div = $element.children('.jqtree-element')
width = $element.width() - 4

@$hint = $('<span class="jqtree-border"></span>')
$div.append(@$hint)

@$hint.css(
width: width
height: $div.height() - 4
)

remove: ->
@$hint.remove()


class GhostDropHint
constructor: (node, $element, position) ->
@$element = $element

@node = node
@$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>')

if position == Position.AFTER
@moveAfter()
else if position == Position.BEFORE
@moveBefore()
else if position == Position.INSIDE
if node.isFolder() and node.is_open
@moveInsideOpenFolder()
else
@moveInside()

remove: ->
@$ghost.remove()

moveAfter: ->
@$element.after(@$ghost)

moveBefore: ->
@$element.before(@$ghost)

moveInsideOpenFolder: ->
$(@node.children[0].element).before(@$ghost)

moveInside: ->
@$element.after(@$ghost)
@$ghost.addClass('jqtree-inside')


module.exports =
FolderElement: FolderElement
NodeElement: NodeElement

0 comments on commit a47e9ad

Please sign in to comment.