commit 4c09af496a4a552a58d86ee557b78e1d48bca5f1 Author: xinni-ge Date: Thu Mar 8 16:26:00 2018 +0900 Add Angular-Vis 4.16.0 An initial commit, providing javascript and meta files. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b3085b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.pyc +*.sw? +*.sqlite3 +.DS_STORE +*.egg-info +.venv +.tox +build +dist diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..04d050d --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License + +Copyright 2015-2017 Chris Jackson and others + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..af3cdd3 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,6 @@ +include README.txt +recursive-include xstatic * +global-exclude *.pyc +global-exclude *.pyo +global-exclude *.orig +global-exclude *.rej diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..c528a11 --- /dev/null +++ b/README.txt @@ -0,0 +1,13 @@ +XStatic-Angular-Vis +-------------- + +Angular-Vis JavaScript library packaged for setuptools (easy_install) / pip. + +This package is intended to be used by **any** project that needs these files. + +It intentionally does **not** provide any extra code except some metadata +**nor** has any extra requirements. You MAY use some minimal support code from +the XStatic base package, if you like. + +You can find more info about the xstatic packaging way in the package `XStatic`. + diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..5f3dde2 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,20 @@ +[metadata] +name = XStatic-Angular-Vis +description = Angular-Vis 4.16.0 (XStatic packaging standard) +description-file = README.rst +maintainer = xinni.ge +maintainer-email = xinni.ge@ntt.com +home-page = https://github.com/visjs/angular-visjs +keywords = angular_vis xstatic +license = MIT +zip_safe = False +namespace_packages = + xstatic + xstatic.pkg + +[files] +packages = + xstatic + +[bdist_wheel] +universal = True diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..37cd525 --- /dev/null +++ b/setup.py @@ -0,0 +1,25 @@ +from setuptools import setup, find_packages +from xstatic.pkg import angular_vis as xs + +# The README.txt file should be written in reST so that PyPI can use +# it to generate your project's PyPI page. +long_description = open('README.txt').read() + +setup( + name=xs.PACKAGE_NAME, + version=xs.PACKAGE_VERSION, + description=xs.DESCRIPTION, + long_description=long_description, + classifiers=xs.CLASSIFIERS, + keywords=xs.KEYWORDS, + maintainer=xs.MAINTAINER, + maintainer_email=xs.MAINTAINER_EMAIL, + license=xs.LICENSE, + url=xs.HOMEPAGE, + platforms=xs.PLATFORMS, + packages=find_packages(), + namespace_packages=['xstatic', 'xstatic.pkg'], + include_package_data=True, + zip_safe=False, + install_requires=[], +) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..9e60b20 --- /dev/null +++ b/tox.ini @@ -0,0 +1,8 @@ +[tox] +minversion = 1.6 +skipsdist = True +envlist = py27,py33,py34 + +[testenv:venv] +commands = {posargs} + diff --git a/xstatic/__init__.py b/xstatic/__init__.py new file mode 100644 index 0000000..de40ea7 --- /dev/null +++ b/xstatic/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/xstatic/pkg/__init__.py b/xstatic/pkg/__init__.py new file mode 100644 index 0000000..de40ea7 --- /dev/null +++ b/xstatic/pkg/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/xstatic/pkg/angular_vis/__init__.py b/xstatic/pkg/angular_vis/__init__.py new file mode 100644 index 0000000..1cc62a4 --- /dev/null +++ b/xstatic/pkg/angular_vis/__init__.py @@ -0,0 +1,50 @@ +""" +XStatic resource package + +See package 'XStatic' for documentation and basic tools. +""" + +DISPLAY_NAME = 'Angular-Vis' # official name, upper/lowercase allowed, no spaces +PACKAGE_NAME = 'XStatic-%s' % DISPLAY_NAME # name used for PyPi + +NAME = __name__.split('.')[-1] # package name (e.g. 'foo' or 'foo_bar') + # please use a all-lowercase valid python + # package name + +VERSION = '4.16.0' # version of the packaged files, please use the upstream + # version number +BUILD = '0' # our package build number, so we can release new builds + # with fixes for xstatic stuff. +PACKAGE_VERSION = VERSION + '.' + BUILD # version used for PyPi + +DESCRIPTION = "%s %s (XStatic packaging standard)" % (DISPLAY_NAME, VERSION) + +PLATFORMS = 'any' +CLASSIFIERS = [] +KEYWORDS = '%s xstatic' % NAME + +# XStatic-* package maintainer: +MAINTAINER = 'xinni.ge' +MAINTAINER_EMAIL = 'xinni.ge@ntt.com' + +# this refers to the project homepage of the stuff we packaged: +HOMEPAGE = 'https://github.com/visjs/angular-visjs' + +# this refers to all files: +LICENSE = 'MIT' + +from os.path import join, dirname +BASE_DIR = join(dirname(__file__), 'data') +# linux package maintainers just can point to their file locations like this: +#BASE_DIR = '/usr/share/javascript/js-yaml' + +LOCATIONS = { + # CDN locations (if no public CDN exists, use an empty dict) + # if value is a string, it is a base location, just append relative + # path/filename. if value is a dict, do another lookup using the + # relative path/filename you want. + # your relative path/filenames should usually be without version + # information, because either the base dir/url is exactly for this + # version or the mapping will care for accessing this version. +} + diff --git a/xstatic/pkg/angular_vis/data/angular-vis.js b/xstatic/pkg/angular_vis/data/angular-vis.js new file mode 100644 index 0000000..47e9424 --- /dev/null +++ b/xstatic/pkg/angular_vis/data/angular-vis.js @@ -0,0 +1,225 @@ +angular.module('ngVis', []) + + .factory('VisDataSet', function () { + 'use strict'; + return function (data, options) { + // Create the new dataSets + return new vis.DataSet(data, options); + }; + }) + +/** + * TimeLine directive + */ + .directive('visTimeline', function () { + 'use strict'; + return { + restrict: 'EA', + transclude: false, + scope: { + data: '=', + options: '=', + events: '=' + }, + link: function (scope, element, attr) { + var timelineEvents = [ + 'rangechange', + 'rangechanged', + 'timechange', + 'timechanged', + 'select', + 'doubleClick', + 'click', + 'contextmenu' + ]; + + // Declare the timeline + var timeline = null; + + scope.$watch('data', function () { + // Sanity check + if (scope.data == null) { + return; + } + + // If we've actually changed the data set, then recreate the graph + // We can always update the data by adding more data to the existing data set + if (timeline != null) { + timeline.destroy(); + } + + // Create the timeline object + timeline = new vis.Timeline(element[0], scope.data.items, scope.data.groups, scope.options); + + // Attach an event handler if defined + angular.forEach(scope.events, function (callback, event) { + if (timelineEvents.indexOf(String(event)) >= 0) { + timeline.on(event, callback); + } + }); + + // onLoad callback + if (scope.events != null && scope.events.onload != null && + angular.isFunction(scope.events.onload)) { + scope.events.onload(timeline); + } + }); + + scope.$watchCollection('options', function (options) { + if (timeline == null) { + return; + } + timeline.setOptions(options); + }); + } + }; + }) + +/** + * Directive for network chart. + */ + .directive('visNetwork', function () { + return { + restrict: 'EA', + transclude: false, + scope: { + data: '=', + options: '=', + events: '=' + }, + link: function (scope, element, attr) { + var networkEvents = [ + 'click', + 'doubleClick', + 'oncontext', + 'hold', + 'release', + 'selectNode', + 'selectEdge', + 'deselectNode', + 'deselectEdge', + 'dragStart', + 'dragging', + 'dragEnd', + 'hoverNode', + 'blurNode', + 'zoom', + 'showPopup', + 'hidePopup', + 'startStabilizing', + 'stabilizationProgress', + 'stabilizationIterationsDone', + 'stabilized', + 'resize', + 'initRedraw', + 'beforeDrawing', + 'afterDrawing', + 'animationFinished' + + ]; + + var network = null; + + scope.$watch('data', function () { + // Sanity check + if (scope.data == null) { + return; + } + + // If we've actually changed the data set, then recreate the graph + // We can always update the data by adding more data to the existing data set + if (network != null) { + network.destroy(); + } + + // Create the graph2d object + network = new vis.Network(element[0], scope.data, scope.options); + + // Attach an event handler if defined + angular.forEach(scope.events, function (callback, event) { + if (networkEvents.indexOf(String(event)) >= 0) { + network.on(event, callback); + } + }); + + // onLoad callback + if (scope.events != null && scope.events.onload != null && + angular.isFunction(scope.events.onload)) { + scope.events.onload(network); + } + }); + + scope.$watchCollection('options', function (options) { + if (network == null) { + return; + } + network.setOptions(options); + }); + } + }; + }) + +/** + * Directive for graph2d. + */ + .directive('visGraph2d', function () { + 'use strict'; + return { + restrict: 'EA', + transclude: false, + scope: { + data: '=', + options: '=', + events: '=' + }, + link: function (scope, element, attr) { + var graphEvents = [ + 'rangechange', + 'rangechanged', + 'timechange', + 'timechanged', + 'finishedRedraw' + ]; + + // Create the chart + var graph = null; + + scope.$watch('data', function () { + // Sanity check + if (scope.data == null) { + return; + } + + // If we've actually changed the data set, then recreate the graph + // We can always update the data by adding more data to the existing data set + if (graph != null) { + graph.destroy(); + } + + // Create the graph2d object + graph = new vis.Graph2d(element[0], scope.data.items, scope.data.groups, scope.options); + + // Attach an event handler if defined + angular.forEach(scope.events, function (callback, event) { + if (graphEvents.indexOf(String(event)) >= 0) { + graph.on(event, callback); + } + }); + + // onLoad callback + if (scope.events != null && scope.events.onload != null && + angular.isFunction(scope.events.onload)) { + scope.events.onload(graph); + } + }); + + scope.$watchCollection('options', function (options) { + if (graph == null) { + return; + } + graph.setOptions(options); + }); + } + }; + }) +;