From 4915c0dfe12626c73286f8fcee66115acd8412e6 Mon Sep 17 00:00:00 2001 From: Tony Breeds Date: Tue, 12 Sep 2017 16:17:09 -0600 Subject: [PATCH] Retire Packaging Deb project repos This commit is part of a series to retire the Packaging Deb project. Step 2 is to remove all content from the project repos, replacing it with a README notification where to find ongoing work, and how to recover the repo if needed at some future point (as in https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project). Change-Id: I18055a3524ece7338b7e8f345fb85c53760bef13 --- .gitignore | 9 - .gitreview | 4 - MANIFEST.in | 8 - README | 14 + README.txt | 21 - setup.py | 27 -- tox.ini | 8 - xstatic/__init__.py | 1 - xstatic/pkg/__init__.py | 1 - xstatic/pkg/magic_search/__init__.py | 49 -- .../pkg/magic_search/data/magic_search.html | 49 -- xstatic/pkg/magic_search/data/magic_search.js | 417 ------------------ .../pkg/magic_search/data/magic_search.scss | 109 ----- 13 files changed, 14 insertions(+), 703 deletions(-) delete mode 100644 .gitignore delete mode 100644 .gitreview delete mode 100644 MANIFEST.in create mode 100644 README delete mode 100644 README.txt delete mode 100644 setup.py delete mode 100644 tox.ini delete mode 100644 xstatic/__init__.py delete mode 100644 xstatic/pkg/__init__.py delete mode 100644 xstatic/pkg/magic_search/__init__.py delete mode 100644 xstatic/pkg/magic_search/data/magic_search.html delete mode 100644 xstatic/pkg/magic_search/data/magic_search.js delete mode 100644 xstatic/pkg/magic_search/data/magic_search.scss diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b3085b8..0000000 --- a/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*.pyc -*.sw? -*.sqlite3 -.DS_STORE -*.egg-info -.venv -.tox -build -dist diff --git a/.gitreview b/.gitreview deleted file mode 100644 index b8ffd22..0000000 --- a/.gitreview +++ /dev/null @@ -1,4 +0,0 @@ -[gerrit] -host=review.openstack.org -port=29418 -project=openstack/xstatic-magic-search.git diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 1ce94ae..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,8 +0,0 @@ -include README.txt -recursive-include xstatic/pkg/magic_search * - -global-exclude *.pyc -global-exclude *.pyo -global-exclude *.orig -global-exclude *.rej - diff --git a/README b/README new file mode 100644 index 0000000..8fcd2b2 --- /dev/null +++ b/README @@ -0,0 +1,14 @@ +This project is no longer maintained. + +The contents of this repository are still available in the Git +source code management system. To see the contents of this +repository before it reached its end of life, please check out the +previous commit with "git checkout HEAD^1". + +For ongoing work on maintaining OpenStack packages in the Debian +distribution, please see the Debian OpenStack packaging team at +https://wiki.debian.org/OpenStack/. + +For any further questions, please email +openstack-dev@lists.openstack.org or join #openstack-dev on +Freenode. diff --git a/README.txt b/README.txt deleted file mode 100644 index 24bf752..0000000 --- a/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -XStatic-MagicSearch -------------------- - -MagicSearch is an AngularJS directive that provides a UI for both faceted -filtering and as-you-type filtering. It is intended for filtering tables, -such as an AngularJS smart-table, but it can be used in any situation -where you can provide it with facets/options and consume its events. - -MagicSearch was initially developed by David Kavanagh for Eucalyptus. - - -MagicSearch 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.py b/setup.py deleted file mode 100644 index b8765cd..0000000 --- a/setup.py +++ /dev/null @@ -1,27 +0,0 @@ -from xstatic.pkg import magic_search 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() - -from setuptools import setup, find_packages - -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=[], # nothing! :) - # if you like, you MAY use the 'XStatic' package. -) diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 9e60b20..0000000 --- a/tox.ini +++ /dev/null @@ -1,8 +0,0 @@ -[tox] -minversion = 1.6 -skipsdist = True -envlist = py27,py33,py34 - -[testenv:venv] -commands = {posargs} - diff --git a/xstatic/__init__.py b/xstatic/__init__.py deleted file mode 100644 index de40ea7..0000000 --- a/xstatic/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__('pkg_resources').declare_namespace(__name__) diff --git a/xstatic/pkg/__init__.py b/xstatic/pkg/__init__.py deleted file mode 100644 index de40ea7..0000000 --- a/xstatic/pkg/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__('pkg_resources').declare_namespace(__name__) diff --git a/xstatic/pkg/magic_search/__init__.py b/xstatic/pkg/magic_search/__init__.py deleted file mode 100644 index edf6f44..0000000 --- a/xstatic/pkg/magic_search/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -""" -XStatic resource package - -See package 'XStatic' for documentation and basic tools. -""" - -DISPLAY_NAME = 'Magic-Search' # 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 = '0.2.5' # version of the packaged files, please use the upstream - # version number -BUILD = '1' # 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 = 'Randy Bertram' -MAINTAINER_EMAIL = 'rbertram@us.ibm.com' - -# this refers to the project homepage of the stuff we packaged: -HOMEPAGE = 'https://github.com/eucalyptus/magic-search' - -# this refers to all files: -LICENSE = '(same as %s)' % DISPLAY_NAME - -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/jquery' - -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/magic_search/data/magic_search.html b/xstatic/pkg/magic_search/data/magic_search.html deleted file mode 100644 index 1a0e6e6..0000000 --- a/xstatic/pkg/magic_search/data/magic_search.html +++ /dev/null @@ -1,49 +0,0 @@ - - diff --git a/xstatic/pkg/magic_search/data/magic_search.js b/xstatic/pkg/magic_search/data/magic_search.js deleted file mode 100644 index 31f35e0..0000000 --- a/xstatic/pkg/magic_search/data/magic_search.js +++ /dev/null @@ -1,417 +0,0 @@ -/** - * @fileOverview Magic Search JS - * @requires AngularJS - * - */ - -// Allow the module to be pre-defined with additional dependencies -try{ - angular.module('MagicSearch'); -} catch (exception) { - angular.module('MagicSearch', []); -} - -angular.module('MagicSearch') - .directive('magicSearch', function($compile) { - return { - restrict: 'E', - scope: { - facets_param: '@facets', - filter_keys: '=filterKeys', - strings: '=strings' - }, - templateUrl: function (scope, elem) { - return elem.template; - }, - controller: function ($scope, $element, $timeout) { - var searchInput = $element.find('.search-input'); - $scope.promptString = $scope.strings.prompt; - $scope.currentSearch = []; - $scope.initSearch = function() { - if (typeof $scope.facets_param === 'string') { - // Parse facets JSON and convert to a list of facets. - var tmp = $scope.facets_param.replace(/__apos__/g, "\'").replace(/__dquote__/g, '\\"').replace(/__bslash__/g, "\\"); - $scope.facetsObj = JSON.parse(tmp); - } - else { - // Assume this is a usable javascript object - $scope.facetsObj = $scope.facets_param; - } - $scope.facetsSave = $scope.copyFacets($scope.facetsObj); - $scope.initFacets(); - }; - $scope.initFacets = function() { - // set facets selected and remove them from facetsObj - var initialFacets = window.location.search; - if (initialFacets.indexOf('?') === 0) { - initialFacets = initialFacets.slice(1); - } - initialFacets = initialFacets.split('&'); - if (initialFacets.length > 1 || initialFacets[0].length > 0) { - $timeout(function() { - $scope.strings.prompt = ''; - }); - } - angular.forEach(initialFacets, function(facet, idx) { - var facetParts = facet.split('='); - angular.forEach($scope.facetsObj, function(value, idx) { - if (value.name == facetParts[0]) { - if (value.options === undefined) { - $scope.currentSearch.push({'name':facet, 'label':[value.label, facetParts[1]]}); - // allow free-form facets to remain - } - else { - angular.forEach(value.options, function(option, idx) { - if (option.key == facetParts[1]) { - $scope.currentSearch.push({'name':facet, 'label':[value.label, option.label]}); - if (value.singleton === true) { - $scope.deleteFacetEntirely(facetParts); - } - else { - $scope.deleteFacetSelection(facetParts); - } - } - }); - } - } - }); - }); - if ($scope.textSearch !== undefined) { - $scope.currentSearch.push({'name':'text='+$scope.textSearch, 'label':[$scope.strings.text, $scope.textSearch]}); - } - $scope.filteredObj = $scope.facetsObj; - }; - $scope.addFacets = function(facets) { - // add a facets javascript object to the existing list - for (var facet in facets) { - $scope.facetsObj.append(facet); - } - }; - $scope.copyFacets = function(facets) { - var ret = []; - for (var i=0; i -1) { - label = [facet.label.substring(0, idx), facet.label.substring(idx, idx + searchVal.length), facet.label.substring(idx + searchVal.length)]; - filtered.push({'name':facet.name, 'label':label, 'options':facet.options}); - } - } - if (filtered.length > 0) { - $scope.showMenu(); - $timeout(function() { - $scope.filteredObj = filtered; - }, 0.1); - } - else { - $scope.$emit('textSearch', searchVal, $scope.filter_keys); - $scope.hideMenu(); - } - } - else { // assume option search - $scope.filteredOptions = $scope.facetOptions; - if ($scope.facetOptions === undefined) { // no options, assume free form text facet - return; - } - for (i=0; i<$scope.filteredOptions.length; i++) { - var option = $scope.filteredOptions[i]; - idx = option.label.toLowerCase().indexOf(searchVal); - if (idx > -1) { - label = [option.label.substring(0, idx), option.label.substring(idx, idx + searchVal.length), option.label.substring(idx + searchVal.length)]; - filtered.push({'key':option.key, 'label':label}); - } - } - if (filtered.length > 0) { - $scope.showMenu(); - $timeout(function() { - $scope.filteredOptions = filtered; - }, 0.1); - } - } - }; - // enable text entry when mouse clicked anywhere in search box - $element.find('.search-main-area').on('click', function($event) { - var target = $($event.target); - if (target.is('.search-main-area')) { - searchInput.trigger('focus'); - $scope.showMenu(); - } - }); - // when facet clicked, add 1st part of facet and set up options - $scope.facetClicked = function($index, $event, name) { - $scope.hideMenu(); - var facet = $scope.filteredObj[$index]; - var label = facet.label; - if (Array.isArray(label)) { - label = label.join(''); - } - $scope.facetSelected = {'name':facet.name, 'label':[label, '']}; - if (facet.options !== undefined) { - $scope.filteredOptions = $scope.facetOptions = facet.options; - $scope.showMenu(); - } - $timeout(function() { - searchInput.val(''); - }); - $scope.strings.prompt = ''; - $timeout(function() { - searchInput.focus(); - }); - }; - // when option clicked, complete facet and send event - $scope.optionClicked = function($index, $event, name) { - $scope.hideMenu(); - var curr = $scope.facetSelected; - curr.name = curr.name + '=' + name; - curr.label[1] = $scope.filteredOptions[$index].label; - if (Array.isArray(curr.label[1])) { - curr.label[1] = curr.label[1].join(''); - } - $scope.currentSearch.push(curr); - $scope.resetState(); - $scope.emitQuery(); - $scope.showMenu(); - }; - // send event with new query string - $scope.emitQuery = function(removed) { - var query = ''; - for (var i=0; i<$scope.currentSearch.length; i++) { - if ($scope.currentSearch[i].name.indexOf('text') !== 0) { - if (query.length > 0) query = query + "&"; - query = query + $scope.currentSearch[i].name; - } - } - if (removed !== undefined && removed.indexOf('text') === 0) { - $scope.$emit('textSearch', '', $scope.filter_keys); - $scope.textSearch = undefined; - } - else { - $scope.$emit('searchUpdated', query); - if ($scope.currentSearch.length > 0) { - // prune facets as needed from menus - var newFacet = $scope.currentSearch[$scope.currentSearch.length-1].name; - var facetParts = newFacet.split('='); - angular.forEach($scope.facetsSave, function(facet, idx) { - if (facet.name == facetParts[0]) { - if (facet.singleton === true) { - $scope.deleteFacetEntirely(facetParts); - } - else { - $scope.deleteFacetSelection(facetParts); - } - } - }); - } - } - }; - // remove facet and either update filter or search - $scope.removeFacet = function($index, $event) { - var removed = $scope.currentSearch[$index].name; - $scope.currentSearch.splice($index, 1); - if ($scope.facetSelected === undefined) { - $scope.emitQuery(removed); - } - else { - $scope.resetState(); - searchInput.val(''); - } - if ($scope.currentSearch.length === 0) { - $scope.strings.prompt = $scope.promptString; - } - // re-init to restore facets cleanly - $scope.facetsObj = $scope.copyFacets($scope.facetsSave); - $scope.currentSearch = []; - $scope.initFacets(); - }; - // clear entire searchbar - $scope.clearSearch = function() { - if ($scope.currentSearch.length > 0) { - $scope.currentSearch = []; - $scope.facetsObj = $scope.copyFacets($scope.facetsSave); - $scope.resetState(); - $scope.$emit('searchUpdated', ''); - $scope.$emit('textSearch', '', $scope.filter_keys); - } - }; - $scope.isMatchLabel = function(label) { - return Array.isArray(label); - }; - $scope.resetState = function() { - searchInput.val(''); - $scope.filteredObj = $scope.facetsObj; - $scope.facetSelected = undefined; - $scope.facetOptions = undefined; - $scope.filteredOptions = undefined; - if ($scope.currentSearch.length === 0) { - $scope.strings.prompt = $scope.promptString; - } - }; - // showMenu and hideMenu depend on foundation's dropdown. They need - // to be modified to work with another dropdown implemenation (i.e. bootstrap) - $scope.showMenu = function() { - $timeout(function() { - if ($('#facet-drop').hasClass('open') === false && $scope.filteredObj.length > 0) { - $('.search-input').trigger('click'); - } - }); - }; - $scope.hideMenu = function() { - $(document).foundation('dropdown', 'closeall'); - }; - $scope.initSearch(); - } - }; - }) -; diff --git a/xstatic/pkg/magic_search/data/magic_search.scss b/xstatic/pkg/magic_search/data/magic_search.scss deleted file mode 100644 index 87ee4a5..0000000 --- a/xstatic/pkg/magic_search/data/magic_search.scss +++ /dev/null @@ -1,109 +0,0 @@ -/* Copyright 2014-2015 Eucalyptus Systems, Inc. */ - -/*----------------------------------------- - Colors - ----------------------------------------- */ -$bordercolor: #ccc; -$iconcolor: #6a737b; -$textcolor: #444; -$background: white; -$itembackground: #e6e7e8; - -/*----------------------------------------- - Item list - ----------------------------------------- */ -@mixin item-list { - .item-list { - position: relative; - //top: -0.30rem; - .item { - color: #333; - background-color: $itembackground; - height: 1.3rem; - margin-right: 0.5rem; - a { - color: white; - } - } - } -} - -@-moz-document url-prefix() { - .item-list { - .item { - top: -0.40rem; - } - } - .search-selected { - top: -0.40rem; - } -} - -/*----------------------------------------- - Magic Search bar - ----------------------------------------- */ -.search-bar { - position: relative; - border: 1px solid $bordercolor; - background-color: $background; - margin-bottom: 0.5rem; - padding: 0.25rem; - height: auto; - i.fi-filter { - color: $iconcolor; - position: absolute; - top: 0.35rem; - left: 0.65rem; - } - .search-main-area { - position: relative; - margin-left: 1.65rem; - margin-right: 1.65rem; - cursor: text; - } - @include item-list; - //.item-list { - // margin-bottom: 0.125rem; - //} - .search-selected { - position: relative; - padding-left: 0; - padding-right: 0; - background-color: $background; - color: $textcolor; - } - .search-entry { - position: relative; - display: inline-block; - height: 1.5rem; - height: 1.5rem; - } - .search-input { - width: 17.5rem; - border: 0; - box-shadow: none; - height: 1.5rem; - padding: 0.25rem; - margin-bottom: 0; - background-color: $background; - &:focus { - box-shadow: none; - background-color: $background; - } - } - .match { - font-weight: bold; - } - i.cancel { - color: $iconcolor; - &:hover { - color: darkred; - } - position: absolute; - top: 0.35rem; - right: 0.65rem; - } - .f-dropdown.open { - left: 0 !important; - } -}