From: Peter Michael Green Date: Tue, 7 Sep 2021 08:50:57 +0000 (+0100) Subject: 0ad (0.0.25b-1+rpi1) bookworm-staging; urgency=medium X-Git-Tag: archive/raspbian/0.0.25b-1.1+rpi1~6 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2df6aa88bda022efcb699fc883743ce94b31c2a8;p=0ad.git 0ad (0.0.25b-1+rpi1) bookworm-staging; urgency=medium * Link with libatomic. * Fix clean target. [dgit import unpatched 0ad 0.0.25b-1+rpi1] --- 2df6aa88bda022efcb699fc883743ce94b31c2a8 diff --cc debian/0ad.6 index 0000000,0000000..ab71e27 new file mode 100644 --- /dev/null +++ b/debian/0ad.6 @@@ -1,0 -1,0 +1,147 @@@ ++.TH 0AD "6" "April 7, 2012" ++.SH NAME ++0ad \- A real-time strategy game of ancient warfare ++.SH SYNOPSIS ++.B 0ad ++.RI [ options ] ++.SH DESCRIPTION ++0 A.D. is a free, open-source, cross-platform real-time strategy game ++of ancient warfare. As the military leader of an ancient civilisation, ++you must gather the resources you need to raise a military force ++capable of dominating your enemies. ++.SH OPTIONS ++.SS Basic gameplay ++.TP ++.B \-autostart ++Load a map instead of showing main menu (see below). ++.TP ++.B \-editor ++Launch the Atlas scenario editor. ++.TP ++.B \-mod NAME ++Start the game using NAME mod. ++.TP ++.B \-quickstart ++Load faster (disables audio and some system info logging). ++.SS Autostart ++.TP ++.B \-autostart=NAME ++Map NAME for scenario, or rms name for random map. ++.TP ++.B \-autostart-ai=PLAYER:AI ++Adds named AI to the given PLAYER (e.g. 2:testbot). ++.SS Multiplayer ++.TP ++.B \-autostart-playername=NAME ++Multiplayer local player NAME (default 'anonymous'). ++.TP ++.B \-autostart-host ++Multiplayer host mode. ++.TP ++.B \-autostart-players=NUMBER ++Multiplayer host: NUMBER of client players (default 2). ++.TP ++.B \-autostart-client ++Multiplayer client mode. ++.TP ++.B \-autostart-ip=IP ++Multiplayer client: connect to this host IP. ++.SS Random maps only ++.TP ++.B \-autostart-random ++Random map. ++.TP ++.B \-autostart-random=SEED ++Random map with SEED value (default 0, use \-1 for random). ++.TP ++.B \-autostart-size=TILES ++Random map SIZE in tiles (default 192). ++.TP ++.B \-autostart-players=NUMBER ++NUMBER of players on random map. ++.SS Configuration ++.TP ++.B \-conf:KEY=VALUE ++Set a config value (overrides the contents of system.cfg). ++.TP ++.B \-g=F ++Set the gamma correction to 'F' (default 1.0). ++.TP ++.B \-nosound ++Disable audio. ++.TP ++.B \-onlyPublicFiles ++Force game to use only the public (default) mod. ++.TP ++.B \-shadows ++Enable shadows. ++.TP ++.B \-vsync ++Enable VSync, i.e. lock FPS to monitor refresh rate. ++.TP ++.B \-xres=N ++Set screen X resolution to 'N'. ++.TP ++.B \-yres=N ++Set screen Y resolution to 'N'. ++.SS Advanced / diagnostic ++.TP ++.B \-dumpSchema ++Creates a file entity.rng in the working directory, containing ++complete entity XML schema, used by various analysis tools. ++.TP ++.B \-replay=PATH ++Non-visual replay of a previous game, used for analysis purposes. ++PATH is system path to commands.txt containing simulation log. ++.TP ++.B \-writableRoot ++Store runtime game data in root data directory (only use if you ++have write permissions on that directory). ++.SS Archive builder ++.TP ++.B \-archivebuild=PATH ++System PATH of the base directory containing mod data to be ++archived/precached. ++.TP ++.B \-archivebuild-output=PATH ++System PATH to output of the resulting .zip archive (use with ++archivebuild). ++.TP ++.B \-archivebuild-compress ++Enable deflate compression in the .zip (no zip compression by ++default since it hurts compression of release packages). ++ ++.SH "FILES" ++.TP ++.B ~/.config/0ad/config/local.cfg ++User specific settings. You may put in this file any user specific ++settings using the same syntax of the default settings file. ++.PP ++0 A.D. also uses the ++.B ~/.cache/0ad/ ++, ++.B ~/.config/0ad/ ++and ++.B ~/.local/share/0ad/ ++directories for other user specific files, such as texture cache, ++screenshots and saved games. ++ ++.SH SEE ALSO ++.TP ++.B http://wildfiregames.com/0ad/ ++0 A.D. main web site. ++.TP ++.B http://trac.wildfiregames.com/ ++0 A.D. wiki and developer web site. ++ ++.SH AUTHOR ++0ad was written by the 0 A.D. Team. ++.PP ++This manual page was written by Fabio Pedretti , ++for the Debian project (and may be used by others). Permission is ++granted to copy, distribute and/or modify this document under the ++terms of the GNU General Public License, Version 2 or any later version ++published by the Free Software Foundation. ++.PP ++On Debian systems, the complete text of the GNU General Public License ++can be found in /usr/share/common-licenses/GPL-2. diff --cc debian/changelog index 0000000,0000000..34bb2c8 new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -1,0 -1,0 +1,432 @@@ ++0ad (0.0.25b-1+rpi1) bookworm-staging; urgency=medium ++ ++ * Link with libatomic. ++ * Fix clean target. ++ ++ -- Peter Michael Green Tue, 07 Sep 2021 08:50:57 +0000 ++ ++0ad (0.0.25b-1) unstable; urgency=medium ++ ++ [David W. Kennedy ] ++ * Package new upstream release. ++ * d/control: Update required versions of dependencies. ++ * d/copyright: Update and correct copyright information of debian package ++ and embedded libraries ++ * d/install: Install binaries/system/readme.txt as README.command-line.txt, ++ also mark install executable to support renaming README.txt with dh-exec. ++ * d/rules: Clean up build files for libnvtt and spidermonkey in ++ dh_auto_clean. ++ * d/rules: Exclude libmozjs78-ps-release.so from dh_dwz in order to work ++ around a crash in dwz. ++ * d/source/local-options: Abort on changes to the upstream source code ++ before committing to the upstream branch of Debian Salsa VCS ++ * d/watch: Update URL for releases. ++ ++ [ Ludovic Rousseau ] ++ * Fix "New upstream release of 0ad - version 0.0.25" (Closes: #992017) ++ * d/control: use https:// for Homepage: URL ++ * d/install: make the script executable ++ * New upstream release 0.0.25b ++ * d/patches/TestStunClient: remove failing test ++ ++ -- Ludovic Rousseau Fri, 27 Aug 2021 15:28:30 +0200 ++ ++0ad (0.0.24b-2) UNRELEASED; urgency=medium ++ ++ [ Pino Toscano ] ++ * Install the AppStream file to /usr/share/metainfo, as /usr/share/appdata ++ is a long time deprecated location. ++ * Install the application icon in the XDG hicolor icon theme, rather than ++ the legacy pixmaps location. ++ ++ -- Debian Games Team Tue, 11 May 2021 08:48:59 +0200 ++ ++0ad (0.0.24b-1) experimental; urgency=medium ++ ++ [ Phil Morrell ] ++ * New upstream release. ++ * Drop upstreamed patches. ++ * Update build-deps. (Closes: #936101, #975379) ++ ++ [ Ludovic Rousseau ] ++ * version 0.0.24b ++ * d/copyright: remove unused entry ++ lintian: unused-file-paragraph-in-dep5-copyright paragraph at line 72 ++ * d/copyright: remove unused entry ++ lintian: unused-file-paragraph-in-dep5-copyright paragraph at line 22 ++ * use embedded nvtt since version 2.1.0 is not yet in unstable ++ * Fix "New upstream release 0.0.24" (Closes: #983408) ++ ++ -- Ludovic Rousseau Sun, 07 Mar 2021 10:53:17 +0100 ++ ++0ad (0.0.23.1-5) unstable; urgency=medium ++ ++ * Fix FTBFS with gcc-10. (Closes: #956967) ++ * Avoid build-dep on unversioned python2. (Closes: #967118) ++ * Cherrypick patch from upstream to add workaround for L3 cache detection on ++ Ryzen 3000 series CPUs. (Closes: #949699) ++ * Update to dh compat level 12. ++ * Update Standards version to 4.5.0. ++ * Add upstream metadata file. ++ ++ -- Vincent Cheng Tue, 18 Aug 2020 02:48:00 -0700 ++ ++0ad (0.0.23.1-4) unstable; urgency=medium ++ ++ * Team upload. ++ * Re-upload source-only to enable migration to testing. ++ ++ -- Bruno Kleinert Mon, 05 Aug 2019 18:56:58 +0200 ++ ++0ad (0.0.23.1-3) unstable; urgency=medium ++ ++ * Team upload. ++ * Build against GTK 3 version of wxWidget. Replaced build dependency ++ libwxgtk3.0-dev by libwxgtk3.0-gtk3-dev. (Closes: #933456) ++ * Added NEWS.Debian to document a workaround for a known issue caused by the ++ GTK 3 variant of wxWidget. ++ ++ -- Bruno Kleinert Sat, 03 Aug 2019 05:18:37 +0200 ++ ++0ad (0.0.23.1-2) unstable; urgency=medium ++ ++ * d/control: version 0.0.23.1 also needs a new 0ad-data ++ ++ -- Ludovic Rousseau Wed, 09 Jan 2019 10:33:09 +0100 ++ ++0ad (0.0.23.1-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Re-release of 0 A.D. Alpha 23 Ken Wood ++ https://play0ad.com/re-release-of-0-a-d-alpha-23-ken-wood/ ++ * d/control: change Depends: to use 0.0.23 since 0ad-data is unchanged. ++ * Fix "Alpha 23 Lobby lag and other multiplayer issues" (Closes: #905470) ++ ++ -- Ludovic Rousseau Fri, 04 Jan 2019 11:18:19 +0100 ++ ++0ad (0.0.23-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Remove enable-hardening-relro.patch and armhf-wchar-signedness.patch; ++ obsolete, applied upstream. ++ - Remove create_empty_dirs.patch and move logic into debian/rules. ++ * Add new build-dep on libsodium-dev (>= 1.0.14). ++ * Restore all supported archs as of 0ad/0.0.21-2, i.e. arm64 and kfreebsd-*. ++ * Update Standards version to 4.1.4, no changes required. ++ ++ -- Vincent Cheng Mon, 21 May 2018 23:38:30 -0700 ++ ++0ad (0.0.22-4) unstable; urgency=medium ++ ++ * Create empty directory not stored in git ++ * Add description to a quilt patch ++ * Enable parallel build ++ * Use debhelper version 10 (instead of 9) ++ * Migrate the repository from SVN to GIT ++ ++ -- Ludovic Rousseau Wed, 10 Jan 2018 16:27:16 +0100 ++ ++0ad (0.0.22-3.1) unstable; urgency=medium ++ ++ * Non-maintainer upload with maintainers permission. ++ * Add armhf back to architecture list. ++ * Fix "0ad FTBFS with on armhf with gcc 7: error: call of overloaded ++ 'abs(unsigned int)' is ambiguous" (Closes: #879071) ++ ++ -- Peter Michael Green Tue, 21 Nov 2017 00:15:10 +0000 ++ ++0ad (0.0.22-3) unstable; urgency=medium ++ ++ * remove support of kfreebsd-amd64 and kfreebsd-i386 since auto test fails ++ for 0ad alpha 22 and then 0ad FTBFS. ++ * debian/source/lintian-overrides: remove unused-override ++ outdated-autotools-helper-file. ++ Reported by lintian. ++ * debian/rules: enable hardening=+all ++ ++ -- Ludovic Rousseau Sat, 04 Nov 2017 11:04:26 +0100 ++ ++0ad (0.0.22-2) unstable; urgency=medium ++ ++ * Fix "0ad FTBFS with on armhf with gcc 7: error: call of overloaded ++ 'abs(unsigned int)' is ambiguous" by removing support of armhf ++ (Closes: #879071) ++ * remove support of arm64 because of FTBFS in spidermonkey/mozjs-38.0.0 ++ https://buildd.debian.org/status/fetch.php?pkg=0ad&arch=arm64&ver=0.0.22-1&stamp=1508351579&raw=0 ++ ++ -- Ludovic Rousseau Fri, 27 Oct 2017 16:22:15 +0200 ++ ++0ad (0.0.22-1) unstable; urgency=medium ++ ++ * New upstream release. ++ * Fix "New Release: 0 A.D. Alpha 22 Venustas" (Closes: #872654) ++ * Export SHELL to make mozjs-38 build using debuild(1) ++ ++ -- Ludovic Rousseau Wed, 18 Oct 2017 15:33:17 +0200 ++ ++0ad (0.0.21-2) unstable; urgency=medium ++ ++ * Fix FTBFS by installing missing files with dh_install. ++ ++ -- Vincent Cheng Sat, 12 Nov 2016 22:57:56 -0800 ++ ++0ad (0.0.21-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Drop debian/patches/fix-gcc6-segfault.patch, obsolete. ++ - Refresh remaining patches. ++ ++ -- Vincent Cheng Sat, 12 Nov 2016 16:46:11 -0800 ++ ++0ad (0.0.20-3) unstable; urgency=medium ++ ++ * Add debian/patches/fix-gcc6-segfault.patch to fix spidermonkey segfault ++ when built with gcc6. (Closes: #835176) ++ * Temporarily disable test suite on arm64 to fix arch-specific FTBFS. ++ * Call dh_strip --dbgsym-migration to cleanly migrate from the old -dbg ++ package to -dbgsym. ++ ++ -- Vincent Cheng Wed, 07 Sep 2016 22:44:22 -0700 ++ ++0ad (0.0.20-2) unstable; urgency=medium ++ ++ * Team upload. ++ * Drop 0ad-dbg package and use the automatic -dbgsym package instead. ++ * d/rules: Remove override for dh_builddeb because xz is the default ++ compression. ++ * Declare compliance with Debian Policy 3.9.8. ++ * Build-depend on python and fix FTBFS. ++ Thanks to Lucas Nussbaum for the report. (Closes: #832870) ++ * Ensure that 0ad can be built twice in a row by updating dh_auto_clean ++ target. Thanks to Peter Green for the patch. ++ ++ -- Markus Koschany Sun, 21 Aug 2016 04:54:55 +0200 ++ ++0ad (0.0.20-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Drop build-dep on libjpeg-dev. ++ - Refresh patches. ++ * Remove debian/menu file as per tech-ctte decision in #741573. ++ * Update Standards version to 3.9.7, no changes required. ++ * Update jQuery/JavaScript related lintian overrides. ++ ++ -- Vincent Cheng Sun, 03 Apr 2016 19:42:21 -0700 ++ ++0ad (0.0.19-1) unstable; urgency=medium ++ ++ * New upstream release. (Closes: #807447) ++ - Add support for arm64. (Closes: #790306) ++ - Replace dependency on libsdl1.2-dev with libsdl2-dev (>= 2.0.2). ++ - Remove gcc-5.1.patch, applied upstream. ++ - Refresh remaining patches. ++ * Fix typo in override target in d/rules. ++ * Update watch file. ++ ++ -- Vincent Cheng Sun, 20 Dec 2015 19:56:20 -0800 ++ ++0ad (0.0.18-2) unstable; urgency=medium ++ ++ [ Logan Rosen ] ++ * debian/patches/gcc-5.1.patch: Pull patch from upstream Git to fix build ++ with GCC 5.1. ++ ++ -- Vincent Cheng Fri, 28 Aug 2015 20:46:34 -0700 ++ ++0ad (0.0.18-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Refresh patches. ++ - Replace build-dep on libmozjs-24-dev with libnspr4-dev. ++ ++ -- Vincent Cheng Wed, 18 Mar 2015 16:58:45 -0700 ++ ++0ad (0.0.17-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Drop debian/patches/{support_miniupnpc_1.9.patch,fix_gcc4.9_ftbfs.patch}: ++ applied upstream. ++ - Add debian/patches/allow-build-with-root.patch. ++ - Add debian/patches/fix-bindir.patch. (LP: #1380737) ++ - Refresh remaining patches. ++ * Update Standards version to 3.9.6, no changes required. ++ ++ -- Vincent Cheng Mon, 13 Oct 2014 20:01:57 -0700 ++ ++0ad (0.0.16-4) unstable; urgency=medium ++ ++ * Add debian/patches/fix_gcc4.9_ftbfs.patch to fix FTBFS when running the ++ test suite when built with gcc 4.9. (Closes: #746822) ++ ++ -- Vincent Cheng Tue, 24 Jun 2014 21:21:36 -0700 ++ ++0ad (0.0.16-3) unstable; urgency=medium ++ ++ * Add debian/patches/support_miniupnpc_1.9.patch to fix FTBFS when built ++ with miniupnpc >= 1.9. (Closes: #751224) ++ * Tighten build-dep on libminiupnpc-dev (>= 1.6). ++ ++ -- Vincent Cheng Wed, 11 Jun 2014 19:46:46 -0700 ++ ++0ad (0.0.16-2) unstable; urgency=medium ++ ++ * Remove armel from Architecture list in debian/control. ++ ++ -- Vincent Cheng Sun, 18 May 2014 19:14:10 -0700 ++ ++0ad (0.0.16-1) unstable; urgency=medium ++ ++ * New upstream release. ++ - Drop debian/patches/fix-kfreebsd-ftbfs.patch; applied upstream. ++ * Avoid repacking tarball by including missing jquery sources in Debian diff, ++ see debian/missing-sources/jquery-1.8.{0,3}.js. Alternative way of fixing ++ #735349. ++ - Update debian/copyright to include missing license entries for the ++ various javascript libraries contained in the source tarball. ++ - Revert changes made to debian/control in 0ad/0.0.15+dfsg-3, i.e.: ++ revert: debian/control: Hardcode versions of 0ad-data{,-common} to ++ depend on to workaround the fact that 0.0.15+dfsg is strictly ++ greater than 0.0.15. ++ * Build-dep on libgloox-dev (>= 1.0.9) to ensure that 0ad is built with ++ newer enough gloox to avoid lobby connectivity issues. ++ * Add new build-deps: libicu-dev, libmozjs-24-dev. ++ ++ -- Vincent Cheng Sat, 17 May 2014 16:30:39 -0700 ++ ++0ad (0.0.15+dfsg-3) unstable; urgency=medium ++ ++ * Repack tarball to remove minified javascript files without source in ++ source/tools/jsdebugger/. (Closes: #735349) ++ - debian/control: Hardcode versions of 0ad-data{,-common} to depend on to ++ workaround the fact that 0.0.15+dfsg is strictly greater than 0.0.15. ++ * Update debian/copyright to include text of IBM Common Public License. ++ * Update email address. ++ ++ -- Vincent Cheng Tue, 18 Feb 2014 23:21:11 -0800 ++ ++0ad (0.0.15-2) unstable; urgency=medium ++ ++ * Add debian/patches/fix-kfreebsd-ftbfs.patch to fix FTBFS on kfreebsd. ++ ++ -- Vincent Cheng Fri, 27 Dec 2013 15:03:44 -0800 ++ ++0ad (0.0.15-1) unstable; urgency=low ++ ++ * New upstream release. ++ - Remove fix-arm-ftbfs.patch, fixed upstream. ++ * Add build-dep on libgloox-dev and libminiupnpc-dev. ++ * Append '~' to libnvtt-dev build dependency to ease backporting. ++ * Prefer libwxgtk3.0-dev over libwxgtk2.8-dev as build-dep (keep latter as ++ alternate build-dep to ease backports). ++ * Update Standards version to 3.9.5, no changes required. ++ ++ -- Vincent Cheng Wed, 25 Dec 2013 17:41:29 -0800 ++ ++0ad (0.0.14-3) unstable; urgency=low ++ ++ * Add debian/patches/fix-arm-ftbfs.patch to fix FTBFS on armel and armhf. ++ ++ -- Vincent Cheng Tue, 17 Sep 2013 01:08:10 -0700 ++ ++0ad (0.0.14-2) unstable; urgency=low ++ ++ * Tighten build dependency on libnvtt-dev to >= 2.0.8-1+dfsg-4 to ensure ++ that amd64 builds of 0ad do not FTBFS on certain hardware. See #713966 ++ for details. ++ * Build 0ad for armel and armhf. ++ ++ -- Vincent Cheng Fri, 06 Sep 2013 23:00:24 -0700 ++ ++0ad (0.0.14-1) unstable; urgency=low ++ ++ * New upstream release. ++ - Remove fix-bindir.patch, boost-libnames.patch; applied/fixed upstream. ++ - Refresh remaining patches. ++ ++ -- Vincent Cheng Thu, 05 Sep 2013 20:02:20 -0700 ++ ++0ad (0.0.13-2) unstable; urgency=low ++ ++ * Add boost-libnames.patch to fix FTBFS with boost 1.53. (Closes: #709570) ++ ++ -- Vincent Cheng Fri, 24 May 2013 01:47:14 -0700 ++ ++0ad (0.0.13-1) unstable; urgency=low ++ ++ * New upstream release. ++ - Refresh patches. ++ * Add icon to Debian menu entry. (Closes: #703254) ++ ++ -- Vincent Cheng Tue, 02 Apr 2013 19:40:54 -0700 ++ ++0ad (0.0.12-1) unstable; urgency=low ++ ++ [ Vincent Cheng ] ++ * New upstream release. ++ - Remove debian/patches/fix-kfreebsd-ftbfs.patch; applied upstream. ++ - Refresh remaining patches. ++ * Add depends on 0ad-data-common. ++ * Add lintian overrides for: ++ - outdated-autotools-helper-file (caused by config.{guess,sub} in a ++ convenience copy of libenet, which we don't use). ++ - version-substvar-for-external-package (not a problem since 0ad and ++ 0ad-data uploaded at same time, and no other mechanism provided by ++ dpkg-gencontrol for packages that want to depend on versioned packages ++ built from a separate source package). ++ * Update Standards version to 3.9.4, no changes required. ++ * Enable verbose build. ++ ++ [ Ansgar Burchardt ] ++ * debian/control: Remove DM-Upload-Allowed. ++ ++ -- Vincent Cheng Tue, 12 Feb 2013 19:24:59 -0800 ++ ++0ad (0.0.11-1) unstable; urgency=low ++ ++ * New upstream release. (Alpha 11 Kronos) ++ - Upstream disabled FAM support as of svn r12550, so remove build-depends ++ on libgamin-dev, and remove depends on gamin | fam. (Closes: #679087) ++ - Refresh existing patches. ++ * Add fallback to launcher script when /usr/games is not in $PATH. ++ (Closes: #679033) ++ * Restrict list of architectures to i386, amd64, and kfreebsd-{i386,amd64}. ++ (Closes: #683282) ++ * Update debian/watch file. ++ * Add DMUA field in debian/control with agreement of sponsor. ++ ++ -- Vincent Cheng Sat, 08 Sep 2012 02:43:25 -0700 ++ ++0ad (0~r11863-2) unstable; urgency=low ++ ++ * Add stricter dependency on 0ad-data. (Closes: #673526) ++ ++ -- Vincent Cheng Sun, 20 May 2012 01:48:59 -0700 ++ ++0ad (0~r11863-1) unstable; urgency=low ++ ++ * New upstream release. ++ - Refresh patches. ++ * Add debian/patches/enable-hardening-relro.patch to build using the ++ "read-only relocation" link flag, as suggested by lintian. ++ * Add build-depends on libxcursor-dev. ++ ++ -- Vincent Cheng Wed, 16 May 2012 23:50:12 -0700 ++ ++0ad (0~r11339-2) unstable; urgency=low ++ ++ * Add debian/patches/fix-kfreebsd-ftbfs.patch to fix FTBFS on kfreebsd. ++ * Update debian/0ad.6. ++ * Add build-depends on dpkg-dev (>= 1.15.5) for xz compression support. ++ * Change build-depends on libjpeg8-dev to libjpeg-dev. ++ * Change build-depends on libpng12-dev to libpng-dev. (Closes: #668453) ++ * Add alternate build-depends on libcurl4-dev. ++ * Add alternate dependency on fam. (Closes: #668353) ++ * Override dh_auto_clean to clean source properly. (Closes: #668686) ++ ++ -- Vincent Cheng Thu, 26 Apr 2012 19:12:26 -0700 ++ ++0ad (0~r11339-1) unstable; urgency=low ++ ++ * Initial release (Closes: #594800) ++ ++ -- Vincent Cheng Thu, 29 Mar 2012 16:13:33 -0700 diff --cc debian/control index 0000000,0000000..a9a9677 new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,62 @@@ ++Source: 0ad ++Section: games ++Priority: optional ++Maintainer: Debian Games Team ++Uploaders: ++ Vincent Cheng , ++ Ludovic Rousseau ++Build-Depends: ++ autoconf, ++ automake, ++ cargo, ++ cmake, ++ debhelper-compat (= 12), ++ dh-exec (>= 0.1), ++ dpkg-dev (>= 1.15.5), ++ libboost-dev (>= 1.57.0.1), ++ libboost-filesystem-dev (>= 1.57.0.1), ++ libcurl4-gnutls-dev (>= 7.32.0) | libcurl4-dev (>= 7.32.0), ++ libenet-dev (>= 1.3), ++ libfmt-dev (>= 4.0.0), ++ libgloox-dev (>= 1.0.10), ++ libicu-dev (>= 67.1-4~), ++ libminiupnpc-dev (>= 1.6), ++ libogg-dev, ++ libopenal-dev, ++ libpng-dev, ++ libsdl2-dev (>= 2.0.5), ++ libsodium-dev (>= 1.0.14), ++ libvorbis-dev, ++ libwxgtk3.0-gtk3-dev, ++ libxcursor-dev, ++ libxml2-dev, ++ llvm, ++ pkg-config, ++ python3, ++ rustc (>= 1.41), ++ tzdata, ++ zlib1g-dev (>= 1:1.2.3) ++Standards-Version: 4.5.0 ++Homepage: https://play0ad.com/ ++Vcs-Git: https://salsa.debian.org/games-team/0ad.git ++Vcs-Browser: https://salsa.debian.org/games-team/0ad ++Rules-Requires-Root: no ++ ++Package: 0ad ++Architecture: amd64 arm64 armhf i386 kfreebsd-amd64 kfreebsd-i386 ++Pre-Depends: dpkg (>= 1.15.6~) ++Depends: ++ 0ad-data (>= ${source:Upstream-Version}), ++ 0ad-data (<= ${source:Version}), ++ 0ad-data-common (>= ${source:Upstream-Version}), ++ 0ad-data-common (<= ${source:Version}), ++ ${misc:Depends}, ++ ${shlibs:Depends} ++Description: Real-time strategy game of ancient warfare ++ 0 A.D. (pronounced "zero ey-dee") is a free, open-source, cross-platform ++ real-time strategy (RTS) game of ancient warfare. In short, it is a ++ historically-based war/economy game that allows players to relive or rewrite ++ the history of Western civilizations, focusing on the years between 500 B.C. ++ and 500 A.D. The project is highly ambitious, involving state-of-the-art 3D ++ graphics, detailed artwork, sound, and a flexible and powerful custom-built ++ game engine. diff --cc debian/copyright index 0000000,0000000..a47bd49 new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,581 @@@ ++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ ++Upstream-Name: 0ad ++Source: https://releases.wildfiregames.com/ ++ ++Files: * ++Copyright: 2000-2021 Wildfire Games ++License: GPL-2.0+ ++ ++ ++Files: debian/* ++Copyright: 2010-2012 Rico Tzschichholz ++ 2010 Bertrand Marc ++ 2011-2020 Vincent Cheng ++ 2011-2012 Ansgar Burchardt ++ 2017-2021 Ludovic Rousseau ++ 2019 Bruno Kleinert ++ 2021 Phil Morrell ++ 2021 Pino Toscano ++ 2021 David W. Kennedy ++License: GPL-2.0+ ++ ++Files: debian/0ad.6 ++Copyright: 2010 Fabio Pedretti ++License: GPL-2.0+ ++ ++Files: source/lib/* ++Copyright: 2010 Wildfire Games ++License: Expat ++ ++Files: source/third_party/* ++Copyright: 2004-2011 Sergey Lyubka ++License: Expat ++ ++Files: source/tools/fontbuilder2/Packer.py ++Copyright: 2002-2009 Nuclex Development Labs ++License: CPL ++ ++Files: source/tools/templatesanalyzer/tablefilter/* ++Copyright: 2014-2016 Max Guglielmi ++License: Expat ++ ++Files: build/premake/* ++Copyright: 2002-2009 Jason Perkins and the Premake project ++License: BSD-3-clause ++ ++Files: libraries/source/cxxtest-4.4/* ++Copyright: 2004 Erez Volk ++ 2004 Jared Grubb ++ 2004 Kevin Fitch ++License: LGPL-2.1+ ++ ++Files: libraries/source/fcollada/* ++Copyright: 2005-2007 Feeling Software Inc. ++ 2005-2007 Sony Computer Entertainment America ++License: Expat ++ ++Files: libraries/source/fcollada/include/FCDocument/* ++ libraries/source/fcollada/include/FUtils/* ++ libraries/source/fcollada/src/FCollada/FCDocument/* ++ libraries/source/fcollada/src/FCollada/FUtils/* ++ libraries/source/fcollada/src/FColladaPlugins/FArchiveXML/* ++Copyright: 2005-2006 Autodesk Media Entertainment ++ 2005-2007 Feeling Software Inc. ++ 2005-2007 Sony Computer Entertainment America ++License: Expat ++ ++Files: libraries/source/nvtt/* ++Copyright: 2006 Simon Brown ++ 2007-2009 NVIDIA Corporation ++ 2006, 2008-2016 Ignacio Castano ++License: Expat ++ ++Files: libraries/source/nvtt/src/src/nvtt/squish/* ++Copyright: 2006 Simon Brown ++ 2006 Ignacio Castano ++ 2016 Raptor Engineering, LLC ++License: Expat ++ ++Files: libraries/source/nvtt/src/src/nvcore/Array.h ++ libraries/source/nvtt/src/src/nvcore/Array.inl ++ libraries/source/nvtt/src/src/nvcore/Containers.h ++ libraries/source/nvtt/src/src/nvcore/Debug.cpp ++ libraries/source/nvtt/src/src/nvcore/Debug.h ++ libraries/source/nvtt/src/src/nvcore/DefsVcWin32.h ++ libraries/source/nvtt/src/src/nvcore/FileSystem.cpp ++ libraries/source/nvtt/src/src/nvcore/FileSystem.h ++ libraries/source/nvtt/src/src/nvcore/ForEach.h ++ libraries/source/nvtt/src/src/nvcore/Hash.h ++ libraries/source/nvtt/src/src/nvcore/Library.h ++ libraries/source/nvtt/src/src/nvcore/Memory.cpp ++ libraries/source/nvtt/src/src/nvcore/Memory.h ++ libraries/source/nvtt/src/src/nvcore/Prefetch.h ++ libraries/source/nvtt/src/src/nvcore/Ptr.h ++ libraries/source/nvtt/src/src/nvcore/RefCounted.h ++ libraries/source/nvtt/src/src/nvcore/StdStream.h ++ libraries/source/nvtt/src/src/nvcore/StrLib.cpp ++ libraries/source/nvtt/src/src/nvcore/StrLib.h ++ libraries/source/nvtt/src/src/nvcore/Stream.h ++ libraries/source/nvtt/src/src/nvcore/TextReader.cpp ++ libraries/source/nvtt/src/src/nvcore/TextReader.h ++ libraries/source/nvtt/src/src/nvcore/TextWriter.cpp ++ libraries/source/nvtt/src/src/nvcore/TextWriter.h ++ libraries/source/nvtt/src/src/nvcore/Timer.cpp ++ libraries/source/nvtt/src/src/nvcore/Timer.h ++ libraries/source/nvtt/src/src/nvcore/Tokenizer.cpp ++ libraries/source/nvtt/src/src/nvcore/Tokenizer.h ++ libraries/source/nvtt/src/src/nvcore/Utils.h ++ libraries/source/nvtt/src/src/nvcore/nvcore.h ++ libraries/source/nvtt/src/src/nvimage/ColorBlock.cpp ++ libraries/source/nvtt/src/src/nvimage/ColorBlock.h ++ libraries/source/nvtt/src/src/nvimage/ColorSpace.cpp ++ libraries/source/nvtt/src/src/nvimage/ColorSpace.h ++ libraries/source/nvtt/src/src/nvimage/Filter.cpp ++ libraries/source/nvtt/src/src/nvimage/Filter.h ++ libraries/source/nvtt/src/src/nvimage/FloatImage.cpp ++ libraries/source/nvtt/src/src/nvimage/FloatImage.h ++ libraries/source/nvtt/src/src/nvimage/HoleFilling.cpp ++ libraries/source/nvtt/src/src/nvimage/HoleFilling.h ++ libraries/source/nvtt/src/src/nvimage/Image.cpp ++ libraries/source/nvtt/src/src/nvimage/Image.h ++ libraries/source/nvtt/src/src/nvimage/ImageIO.cpp ++ libraries/source/nvtt/src/src/nvimage/ImageIO.h ++ libraries/source/nvtt/src/src/nvimage/KtxFile.cpp ++ libraries/source/nvtt/src/src/nvimage/KtxFile.h ++ libraries/source/nvtt/src/src/nvimage/NormalMipmap.cpp ++ libraries/source/nvtt/src/src/nvimage/NormalMipmap.h ++ libraries/source/nvtt/src/src/nvimage/PsdFile.h ++ libraries/source/nvtt/src/src/nvimage/Quantize.cpp ++ libraries/source/nvtt/src/src/nvimage/Quantize.h ++ libraries/source/nvtt/src/src/nvimage/TgaFile.h ++ libraries/source/nvtt/src/src/nvimage/nvimage.h ++ libraries/source/nvtt/src/src/nvmath/Basis.cpp ++ libraries/source/nvtt/src/src/nvmath/Basis.h ++ libraries/source/nvtt/src/src/nvmath/Box.cpp ++ libraries/source/nvtt/src/src/nvmath/Box.h ++ libraries/source/nvtt/src/src/nvmath/Color.cpp ++ libraries/source/nvtt/src/src/nvmath/Color.h ++ libraries/source/nvtt/src/src/nvmath/Color.inl ++ libraries/source/nvtt/src/src/nvmath/Fitting.cpp ++ libraries/source/nvtt/src/src/nvmath/Fitting.h ++ libraries/source/nvtt/src/src/nvmath/Matrix.h ++ libraries/source/nvtt/src/src/nvmath/Matrix.inl ++ libraries/source/nvtt/src/src/nvmath/Montecarlo.cpp ++ libraries/source/nvtt/src/src/nvmath/Montecarlo.h ++ libraries/source/nvtt/src/src/nvmath/PackedFloat.cpp ++ libraries/source/nvtt/src/src/nvmath/PackedFloat.h ++ libraries/source/nvtt/src/src/nvmath/Plane.cpp ++ libraries/source/nvtt/src/src/nvmath/Plane.h ++ libraries/source/nvtt/src/src/nvmath/Plane.inl ++ libraries/source/nvtt/src/src/nvmath/Quaternion.h ++ libraries/source/nvtt/src/src/nvmath/Random.cpp ++ libraries/source/nvtt/src/src/nvmath/Random.h ++ libraries/source/nvtt/src/src/nvmath/SimdVector.h ++ libraries/source/nvtt/src/src/nvmath/SphericalHarmonic.cpp ++ libraries/source/nvtt/src/src/nvmath/SphericalHarmonic.h ++ libraries/source/nvtt/src/src/nvmath/Triangle.cpp ++ libraries/source/nvtt/src/src/nvmath/Triangle.h ++ libraries/source/nvtt/src/src/nvmath/Vector.h ++ libraries/source/nvtt/src/src/nvmath/Vector.inl ++ libraries/source/nvtt/src/src/nvmath/ftoi.h ++ libraries/source/nvtt/src/src/nvmath/nvmath.h ++ libraries/source/nvtt/src/src/nvthread/Atomic.h ++ libraries/source/nvtt/src/src/nvthread/Event.cpp ++ libraries/source/nvtt/src/src/nvthread/Event.h ++ libraries/source/nvtt/src/src/nvthread/Mutex.cpp ++ libraries/source/nvtt/src/src/nvthread/Mutex.h ++ libraries/source/nvtt/src/src/nvthread/nvthread.cpp ++ libraries/source/nvtt/src/src/nvthread/nvthread.h ++ libraries/source/nvtt/src/src/nvthread/ParallelFor.cpp ++ libraries/source/nvtt/src/src/nvthread/ParallelFor.h ++ libraries/source/nvtt/src/src/nvthread/Thread.cpp ++ libraries/source/nvtt/src/src/nvthread/Thread.h ++ libraries/source/nvtt/src/src/nvthread/ThreadPool.cpp ++ libraries/source/nvtt/src/src/nvthread/ThreadPool.h ++ libraries/source/nvtt/src/src/nvthread/Win32.h ++Copyright: Ignacio Castano ++License: public-domain ++ The license is not specified beyond public-domain. ++ The line from the source code is the following: ++ "This code is in the public domain -- castanyo@yahoo.es" ++ ++Files: libraries/source/nvtt/src/src/nvmath/Gamma.* ++Copyright: 2017 Ken Cooke ++License: Expat ++ ++Files: libraries/source/nvtt/src/src/nvmath/Half.* ++Copyright: 2006 Mike Acton ++License: Expat ++ ++Files: libraries/source/nvtt/src/src/nvmath/SimdVector_SSE.h ++Copyright: 2006 Simon Brown ++License: Expat ++ ++Files: libraries/source/nvtt/src/src/nvmath/SimdVector_VE.h ++Copyright: 2006 Simon Brown ++ 2016 Raptor Engineering ++License: Expat ++ ++Files: libraries/source/nvtt/src/src/nvmath/Matrix.cpp ++Copyright: Paul Heckbert ++ 1999-2004 Michael Garland ++ Ignacio Castano ++License: Expat ++ ++Files: libraries/source/nvtt/src/extern/poshlib/posh.* ++Copyright: 2002-2006 Brian Hook ++License: BSD-3-clause ++ ++Files: libraries/source/spidermonkey/* ++Copyright: 1998-2020 Mozilla Corporation ++License: MPL-2.0 and GPL-2.0 and LGPL-2.1 ++ ++Files: libraries/source/valgrind/* ++Copyright: 2003-2012 Josef Weidendorfer ++ 2000-2012 Julian Seward ++License: BSD-4-clause ++ ++License: BSD-3-clause ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are met: ++ * Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ * Neither the name of the nor the ++ names of its contributors may be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ++ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY ++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++License: CPL ++ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC ++ LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM ++ CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. ++ . ++ 1. DEFINITIONS ++ . ++ "Contribution" means: ++ . ++ a) in the case of the initial Contributor, the initial code and ++ documentation distributed under this Agreement, and ++ . ++ b) in the case of each subsequent Contributor: ++ . ++ i) changes to the Program, and ++ . ++ ii) additions to the Program; ++ . ++ where such changes and/or additions to the Program originate from and are ++ distributed by that particular Contributor. A Contribution 'originates' from a ++ Contributor if it was added to the Program by such Contributor itself or anyone ++ acting on such Contributor's behalf. Contributions do not include additions to ++ the Program which: (i) are separate modules of software distributed in ++ conjunction with the Program under their own license agreement, and (ii) are not ++ derivative works of the Program. ++ . ++ "Contributor" means any person or entity that distributes the Program. ++ . ++ "Licensed Patents " mean patent claims licensable by a Contributor which are ++ necessarily infringed by the use or sale of its Contribution alone or when ++ combined with the Program. ++ . ++ "Program" means the Contributions distributed in accordance with this Agreement. ++ . ++ "Recipient" means anyone who receives the Program under this Agreement, ++ including all Contributors. ++ . ++ 2. GRANT OF RIGHTS ++ . ++ a) Subject to the terms of this Agreement, each Contributor hereby grants ++ Recipient a non-exclusive, worldwide, royalty-free copyright license to ++ reproduce, prepare derivative works of, publicly display, publicly perform, ++ distribute and sublicense the Contribution of such Contributor, if any, and such ++ derivative works, in source code and object code form. ++ . ++ b) Subject to the terms of this Agreement, each Contributor hereby grants ++ Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed ++ Patents to make, use, sell, offer to sell, import and otherwise transfer the ++ Contribution of such Contributor, if any, in source code and object code form. ++ This patent license shall apply to the combination of the Contribution and the ++ Program if, at the time the Contribution is added by the Contributor, such ++ addition of the Contribution causes such combination to be covered by the ++ Licensed Patents. The patent license shall not apply to any other combinations ++ which include the Contribution. No hardware per se is licensed hereunder. ++ . ++ c) Recipient understands that although each Contributor grants the licenses ++ to its Contributions set forth herein, no assurances are provided by any ++ Contributor that the Program does not infringe the patent or other intellectual ++ property rights of any other entity. Each Contributor disclaims any liability to ++ Recipient for claims brought by any other entity based on infringement of ++ intellectual property rights or otherwise. As a condition to exercising the ++ rights and licenses granted hereunder, each Recipient hereby assumes sole ++ responsibility to secure any other intellectual property rights needed, if any. ++ For example, if a third party patent license is required to allow Recipient to ++ distribute the Program, it is Recipient's responsibility to acquire that license ++ before distributing the Program. ++ . ++ d) Each Contributor represents that to its knowledge it has sufficient ++ copyright rights in its Contribution, if any, to grant the copyright license set ++ forth in this Agreement. ++ . ++ 3. REQUIREMENTS ++ . ++ A Contributor may choose to distribute the Program in object code form under its ++ own license agreement, provided that: ++ . ++ a) it complies with the terms and conditions of this Agreement; and ++ . ++ b) its license agreement: ++ . ++ i) effectively disclaims on behalf of all Contributors all warranties and ++ conditions, express and implied, including warranties or conditions of title and ++ non-infringement, and implied warranties or conditions of merchantability and ++ fitness for a particular purpose; ++ . ++ ii) effectively excludes on behalf of all Contributors all liability for ++ damages, including direct, indirect, special, incidental and consequential ++ damages, such as lost profits; ++ . ++ iii) states that any provisions which differ from this Agreement are offered ++ by that Contributor alone and not by any other party; and ++ . ++ iv) states that source code for the Program is available from such ++ Contributor, and informs licensees how to obtain it in a reasonable manner on or ++ through a medium customarily used for software exchange. ++ . ++ When the Program is made available in source code form: ++ . ++ a) it must be made available under this Agreement; and ++ . ++ b) a copy of this Agreement must be included with each copy of the Program. ++ . ++ Contributors may not remove or alter any copyright notices contained within the ++ Program. ++ . ++ Each Contributor must identify itself as the originator of its Contribution, if ++ any, in a manner that reasonably allows subsequent Recipients to identify the ++ originator of the Contribution. ++ . ++ 4. COMMERCIAL DISTRIBUTION ++ . ++ Commercial distributors of software may accept certain responsibilities with ++ respect to end users, business partners and the like. While this license is ++ intended to facilitate the commercial use of the Program, the Contributor who ++ includes the Program in a commercial product offering should do so in a manner ++ which does not create potential liability for other Contributors. Therefore, if ++ a Contributor includes the Program in a commercial product offering, such ++ Contributor ("Commercial Contributor") hereby agrees to defend and indemnify ++ every other Contributor ("Indemnified Contributor") against any losses, damages ++ and costs (collectively "Losses") arising from claims, lawsuits and other legal ++ actions brought by a third party against the Indemnified Contributor to the ++ extent caused by the acts or omissions of such Commercial Contributor in ++ connection with its distribution of the Program in a commercial product ++ offering. The obligations in this section do not apply to any claims or Losses ++ relating to any actual or alleged intellectual property infringement. In order ++ to qualify, an Indemnified Contributor must: a) promptly notify the Commercial ++ Contributor in writing of such claim, and b) allow the Commercial Contributor to ++ control, and cooperate with the Commercial Contributor in, the defense and any ++ related settlement negotiations. The Indemnified Contributor may participate in ++ any such claim at its own expense. ++ . ++ For example, a Contributor might include the Program in a commercial product ++ offering, Product X. That Contributor is then a Commercial Contributor. If that ++ Commercial Contributor then makes performance claims, or offers warranties ++ related to Product X, those performance claims and warranties are such ++ Commercial Contributor's responsibility alone. Under this section, the ++ Commercial Contributor would have to defend claims against the other ++ Contributors related to those performance claims and warranties, and if a court ++ requires any other Contributor to pay any damages as a result, the Commercial ++ Contributor must pay those damages. ++ . ++ 5. NO WARRANTY ++ . ++ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN ++ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR ++ IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, ++ NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each ++ Recipient is solely responsible for determining the appropriateness of using and ++ distributing the Program and assumes all risks associated with its exercise of ++ rights under this Agreement, including but not limited to the risks and costs of ++ program errors, compliance with applicable laws, damage to or loss of data, ++ programs or equipment, and unavailability or interruption of operations. ++ . ++ 6. DISCLAIMER OF LIABILITY ++ . ++ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY ++ CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST ++ PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS ++ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ++ . ++ 7. GENERAL ++ . ++ If any provision of this Agreement is invalid or unenforceable under applicable ++ law, it shall not affect the validity or enforceability of the remainder of the ++ terms of this Agreement, and without further action by the parties hereto, such ++ provision shall be reformed to the minimum extent necessary to make such ++ provision valid and enforceable. ++ . ++ If Recipient institutes patent litigation against a Contributor with respect to ++ a patent applicable to software (including a cross-claim or counterclaim in a ++ lawsuit), then any patent licenses granted by that Contributor to such Recipient ++ under this Agreement shall terminate as of the date such litigation is filed. In ++ addition, if Recipient institutes patent litigation against any entity ++ (including a cross-claim or counterclaim in a lawsuit) alleging that the Program ++ itself (excluding combinations of the Program with other software or hardware) ++ infringes such Recipient's patent(s), then such Recipient's rights granted under ++ Section 2(b) shall terminate as of the date such litigation is filed. ++ . ++ All Recipient's rights under this Agreement shall terminate if it fails to ++ comply with any of the material terms or conditions of this Agreement and does ++ not cure such failure in a reasonable period of time after becoming aware of ++ such noncompliance. If all Recipient's rights under this Agreement terminate, ++ Recipient agrees to cease use and distribution of the Program as soon as ++ reasonably practicable. However, Recipient's obligations under this Agreement ++ and any licenses granted by Recipient relating to the Program shall continue and ++ survive. ++ . ++ Everyone is permitted to copy and distribute copies of this Agreement, but in ++ order to avoid inconsistency the Agreement is copyrighted and may only be ++ modified in the following manner. The Agreement Steward reserves the right to ++ publish new versions (including revisions) of this Agreement from time to time. ++ No one other than the Agreement Steward has the right to modify this Agreement. ++ IBM is the initial Agreement Steward. IBM may assign the responsibility to serve ++ as the Agreement Steward to a suitable separate entity. Each new version of the ++ Agreement will be given a distinguishing version number. The Program (including ++ Contributions) may always be distributed subject to the version of the Agreement ++ under which it was received. In addition, after a new version of the Agreement ++ is published, Contributor may elect to distribute the Program (including its ++ Contributions) under the new version. Except as expressly stated in Sections ++ 2(a) and 2(b) above, Recipient receives no rights or licenses to the ++ intellectual property of any Contributor under this Agreement, whether ++ expressly, by implication, estoppel or otherwise. All rights in the Program not ++ expressly granted under this Agreement are reserved. ++ . ++ This Agreement is governed by the laws of the State of New York and the ++ intellectual property laws of the United States of America. No party to this ++ Agreement will bring a legal action under this Agreement more than one year ++ after the cause of action arose. Each party waives its rights to a jury trial in ++ any resulting litigation. ++ ++License: Expat ++ 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 ++ ++License: GPL-2.0 ++ This package is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License, version 2 of ++ the License, as published by the Free Software Foundation. ++ . ++ This package is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ . ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". ++ ++License: GPL-2.0+ ++ This package is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ . ++ This package is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ . ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". ++ ++License: LGPL-2.1 ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License, version 2.1 of the License, as published by the ++ Free Software Foundation. ++ . ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ . ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 2 can be found in "/usr/share/common-licenses/ ++ LGPL-2.1". ++ ++License: LGPL-2.1+ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ . ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ . ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 2 can be found in "/usr/share/common-licenses/ ++ LGPL-2.1". ++ ++License: MPL-2.0 ++ This Source Code Form is subject to the terms of the Mozilla Public ++ License, v. 2.0. If a copy of the MPL was not distributed with this ++ file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ . ++ On Debian systems, the complete text of the Mozilla Public License, ++ version 2 can be found in "/usr/share/common-licenses/MPL-2.0". ++ ++License: BSD-4-clause ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions ++ are met: ++ . ++ 1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ . ++ 2. The origin of this software must not be misrepresented; you must ++ not claim that you wrote the original software. If you use this ++ software in a product, an acknowledgment in the product ++ documentation would be appreciated but is not required. ++ . ++ 3. Altered source versions must be plainly marked as such, and must ++ not be misrepresented as being the original software. ++ . ++ 4. The name of the author may not be used to endorse or promote ++ products derived from this software without specific prior written ++ permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS ++ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ++ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ++ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --cc debian/docs index 0000000,0000000..71dfd5b new file mode 100644 --- /dev/null +++ b/debian/docs @@@ -1,0 -1,0 +1,1 @@@ ++README.txt diff --cc debian/install index 0000000,0000000..6fa8d8a new file mode 100755 --- /dev/null +++ b/debian/install @@@ -1,0 -1,0 +1,16 @@@ ++#!/usr/bin/dh-exec --with=install ++binaries/data/l10n usr/share/games/0ad/ ++binaries/system/libAtlasUI.so usr/lib/games/0ad/ ++binaries/system/libCollada.so usr/lib/games/0ad/ ++binaries/system/libmozjs78-ps-release.so usr/lib/games/0ad/ ++binaries/system/ActorEditor usr/lib/games/0ad/ ++binaries/system/libnvtt.so usr/lib/games/0ad/ ++binaries/system/libnvcore.so usr/lib/games/0ad/ ++binaries/system/libnvimage.so usr/lib/games/0ad/ ++binaries/system/libnvmath.so usr/lib/games/0ad/ ++binaries/system/pyrogenesis usr/games/ ++build/resources/0ad.appdata.xml usr/share/metainfo/ ++build/resources/0ad.desktop usr/share/applications/ ++build/resources/0ad.png usr/share/icons/hicolor/128x128/apps/ ++usr/games/0ad ++binaries/system/readme.txt => usr/share/doc/0ad/README.command-line.txt diff --cc debian/manpages index 0000000,0000000..4ff5397 new file mode 100644 --- /dev/null +++ b/debian/manpages @@@ -1,0 -1,0 +1,2 @@@ ++debian/0ad.6 ++debian/pyrogenesis.6 diff --cc debian/missing-sources/README.txt index 0000000,0000000..427fdd4 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/README.txt @@@ -1,0 -1,0 +1,21 @@@ ++This directory provides the non-minified versions of the embedded JQuery files ++in the orig source tarball, in order to comply with Debian Policy. (#735349) ++ ++The minified javascript files for which this directory provides the ++non-minified versions are as follows. Each of the lines below indicate the ++minified file, followed by the non-minified source file(s) present in this ++directory. ++ ++source/tools/replayprofile/jquery.flot.js: ++ jquery.colorhelpers.js ++source/tools/replayprofile/jquery.flot.navigate.js: ++ jquery.event.drag.js ++ jquery.mousewheel.js ++ ++source/tools/templatesanalyzer/tablefilter/tablefilter.js: ++source/tools/templatesanalyzer/tablefilter/tf-1.js: ++ tablefilter/*.js ++ ++(Tablefilter 0.0.11: https://github.com/koalyptus/TableFilter/tree/4f2316a4b57021a41edd10d3b98e7f8159642392) ++ ++ diff --cc debian/missing-sources/jquery.colorhelpers.js index 0000000,0000000..fa44961 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/jquery.colorhelpers.js @@@ -1,0 -1,0 +1,174 @@@ ++/* Plugin for jQuery for working with colors. ++ * ++ * Version 1.0. ++ * ++ * Inspiration from jQuery color animation plugin by John Resig. ++ * ++ * Released under the MIT license by Ole Laursen, October 2009. ++ * ++ * Examples: ++ * ++ * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() ++ * var c = $.color.extract($("#mydiv"), 'background-color'); ++ * console.log(c.r, c.g, c.b, c.a); ++ * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" ++ * ++ * Note that .scale() and .add() work in-place instead of returning ++ * new objects. ++ */ ++ ++(function() { ++ jQuery.color = {}; ++ ++ // construct color object with some convenient chainable helpers ++ jQuery.color.make = function (r, g, b, a) { ++ var o = {}; ++ o.r = r || 0; ++ o.g = g || 0; ++ o.b = b || 0; ++ o.a = a != null ? a : 1; ++ ++ o.add = function (c, d) { ++ for (var i = 0; i < c.length; ++i) ++ o[c.charAt(i)] += d; ++ return o.normalize(); ++ }; ++ ++ o.scale = function (c, f) { ++ for (var i = 0; i < c.length; ++i) ++ o[c.charAt(i)] *= f; ++ return o.normalize(); ++ }; ++ ++ o.toString = function () { ++ if (o.a >= 1.0) { ++ return "rgb("+[o.r, o.g, o.b].join(",")+")"; ++ } else { ++ return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; ++ } ++ }; ++ ++ o.normalize = function () { ++ function clamp(min, value, max) { ++ return value < min ? min: (value > max ? max: value); ++ } ++ ++ o.r = clamp(0, parseInt(o.r), 255); ++ o.g = clamp(0, parseInt(o.g), 255); ++ o.b = clamp(0, parseInt(o.b), 255); ++ o.a = clamp(0, o.a, 1); ++ return o; ++ }; ++ ++ o.clone = function () { ++ return jQuery.color.make(o.r, o.b, o.g, o.a); ++ }; ++ ++ return o.normalize(); ++ } ++ ++ // extract CSS color property from element, going up in the DOM ++ // if it's "transparent" ++ jQuery.color.extract = function (elem, css) { ++ var c; ++ do { ++ c = elem.css(css).toLowerCase(); ++ // keep going until we find an element that has color, or ++ // we hit the body ++ if (c != '' && c != 'transparent') ++ break; ++ elem = elem.parent(); ++ } while (!jQuery.nodeName(elem.get(0), "body")); ++ ++ // catch Safari's way of signalling transparent ++ if (c == "rgba(0, 0, 0, 0)") ++ c = "transparent"; ++ ++ return jQuery.color.parse(c); ++ } ++ ++ // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), ++ // returns color object ++ jQuery.color.parse = function (str) { ++ var res, m = jQuery.color.make; ++ ++ // Look for rgb(num,num,num) ++ if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) ++ return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); ++ ++ // Look for rgba(num,num,num,num) ++ if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) ++ return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); ++ ++ // Look for rgb(num%,num%,num%) ++ if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) ++ return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); ++ ++ // Look for rgba(num%,num%,num%,num) ++ if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) ++ return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); ++ ++ // Look for #a0b1c2 ++ if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) ++ return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); ++ ++ // Look for #fff ++ if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) ++ return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); ++ ++ // Otherwise, we're most likely dealing with a named color ++ var name = jQuery.trim(str).toLowerCase(); ++ if (name == "transparent") ++ return m(255, 255, 255, 0); ++ else { ++ res = lookupColors[name]; ++ return m(res[0], res[1], res[2]); ++ } ++ } ++ ++ var lookupColors = { ++ aqua:[0,255,255], ++ azure:[240,255,255], ++ beige:[245,245,220], ++ black:[0,0,0], ++ blue:[0,0,255], ++ brown:[165,42,42], ++ cyan:[0,255,255], ++ darkblue:[0,0,139], ++ darkcyan:[0,139,139], ++ darkgrey:[169,169,169], ++ darkgreen:[0,100,0], ++ darkkhaki:[189,183,107], ++ darkmagenta:[139,0,139], ++ darkolivegreen:[85,107,47], ++ darkorange:[255,140,0], ++ darkorchid:[153,50,204], ++ darkred:[139,0,0], ++ darksalmon:[233,150,122], ++ darkviolet:[148,0,211], ++ fuchsia:[255,0,255], ++ gold:[255,215,0], ++ green:[0,128,0], ++ indigo:[75,0,130], ++ khaki:[240,230,140], ++ lightblue:[173,216,230], ++ lightcyan:[224,255,255], ++ lightgreen:[144,238,144], ++ lightgrey:[211,211,211], ++ lightpink:[255,182,193], ++ lightyellow:[255,255,224], ++ lime:[0,255,0], ++ magenta:[255,0,255], ++ maroon:[128,0,0], ++ navy:[0,0,128], ++ olive:[128,128,0], ++ orange:[255,165,0], ++ pink:[255,192,203], ++ purple:[128,0,128], ++ violet:[128,0,128], ++ red:[255,0,0], ++ silver:[192,192,192], ++ white:[255,255,255], ++ yellow:[255,255,0] ++ }; ++})(); diff --cc debian/missing-sources/jquery.event.drag.js index 0000000,0000000..ad66b10 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/jquery.event.drag.js @@@ -1,0 -1,0 +1,137 @@@ ++/*! ++jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com) ++Liscensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt ++*/ ++;(function($){ // secure $ jQuery alias ++/*******************************************************************************************/ ++// Created: 2008-06-04 | Updated: 2009-03-24 ++/*******************************************************************************************/ ++// Events: drag, dragstart, dragend ++/*******************************************************************************************/ ++ ++// jquery method ++$.fn.drag = function( fn1, fn2, fn3 ){ ++ if ( fn2 ) this.bind('dragstart', fn1 ); // 2+ args ++ if ( fn3 ) this.bind('dragend', fn3 ); // 3 args ++ return !fn1 ? this.trigger('drag') // 0 args ++ : this.bind('drag', fn2 ? fn2 : fn1 ); // 1+ args ++ }; ++ ++// local refs ++var $event = $.event, $special = $event.special, ++ ++// special event configuration ++drag = $special.drag = { ++ not: ':input', // don't begin to drag on event.targets that match this selector ++ distance: 0, // distance dragged before dragstart ++ which: 1, // mouse button pressed to start drag sequence ++ dragging: false, // hold the active target element ++ setup: function( data ){ ++ data = $.extend({ ++ distance: drag.distance, ++ which: drag.which, ++ not: drag.not ++ }, data || {}); ++ data.distance = squared( data.distance ); // x² + y² = distance² ++ $event.add( this, "mousedown", handler, data ); ++ if ( this.attachEvent ) this.attachEvent("ondragstart", dontStart ); // prevent image dragging in IE... ++ }, ++ teardown: function(){ ++ $event.remove( this, "mousedown", handler ); ++ if ( this === drag.dragging ) drag.dragging = drag.proxy = false; // deactivate element ++ selectable( this, true ); // enable text selection ++ if ( this.detachEvent ) this.detachEvent("ondragstart", dontStart ); // prevent image dragging in IE... ++ } ++ }; ++ ++// prevent normal event binding... ++$special.dragstart = $special.dragend = { setup:function(){}, teardown:function(){} }; ++ ++// handle drag-releatd DOM events ++function handler ( event ){ ++ var elem = this, returned, data = event.data || {}; ++ // mousemove or mouseup ++ if ( data.elem ){ ++ // update event properties... ++ elem = event.dragTarget = data.elem; // drag source element ++ event.dragProxy = drag.proxy || elem; // proxy element or source ++ event.cursorOffsetX = data.pageX - data.left; // mousedown offset ++ event.cursorOffsetY = data.pageY - data.top; // mousedown offset ++ event.offsetX = event.pageX - event.cursorOffsetX; // element offset ++ event.offsetY = event.pageY - event.cursorOffsetY; // element offset ++ } ++ // mousedown, check some initial props to avoid the switch statement ++ else if ( drag.dragging || ( data.which>0 && event.which!=data.which ) || ++ $( event.target ).is( data.not ) ) return; ++ // handle various events ++ switch ( event.type ){ ++ // mousedown, left click, event.target is not restricted, init dragging ++ case 'mousedown': ++ $.extend( data, $( elem ).offset(), { ++ elem: elem, target: event.target, ++ pageX: event.pageX, pageY: event.pageY ++ }); // store some initial attributes ++ $event.add( document, "mousemove mouseup", handler, data ); ++ selectable( elem, false ); // disable text selection ++ drag.dragging = null; // pending state ++ return false; // prevents text selection in safari ++ // mousemove, check distance, start dragging ++ case !drag.dragging && 'mousemove': ++ if ( squared( event.pageX-data.pageX ) ++ + squared( event.pageY-data.pageY ) // x² + y² = distance² ++ < data.distance ) break; // distance tolerance not reached ++ event.target = data.target; // force target from "mousedown" event (fix distance issue) ++ returned = hijack( event, "dragstart", elem ); // trigger "dragstart", return proxy element ++ if ( returned !== false ){ // "dragstart" not rejected ++ drag.dragging = elem; // activate element ++ drag.proxy = event.dragProxy = $( returned || elem )[0]; // set proxy ++ } ++ // mousemove, dragging ++ case 'mousemove': ++ if ( drag.dragging ){ ++ returned = hijack( event, "drag", elem ); // trigger "drag" ++ if ( $special.drop ){ // manage drop events ++ $special.drop.allowed = ( returned !== false ); // prevent drop ++ $special.drop.handler( event ); // "dropstart", "dropend" ++ } ++ if ( returned !== false ) break; // "drag" not rejected, stop ++ event.type = "mouseup"; // helps "drop" handler behave ++ } ++ // mouseup, stop dragging ++ case 'mouseup': ++ $event.remove( document, "mousemove mouseup", handler ); // remove page events ++ if ( drag.dragging ){ ++ if ( $special.drop ) $special.drop.handler( event ); // "drop" ++ hijack( event, "dragend", elem ); // trigger "dragend" ++ } ++ selectable( elem, true ); // enable text selection ++ drag.dragging = drag.proxy = data.elem = false; // deactivate element ++ break; ++ } ++ return true; ++ }; ++ ++// set event type to custom value, and handle it ++function hijack ( event, type, elem ){ ++ event.type = type; // force the event type ++ var result = $.event.handle.call( elem, event ); ++ return result===false ? false : result || event.result; ++ }; ++ ++// return the value squared ++function squared ( value ){ return Math.pow( value, 2 ); }; ++ ++// suppress default dragstart IE events... ++function dontStart(){ return ( drag.dragging === false ); }; ++ ++// toggles text selection attributes ++function selectable ( elem, bool ){ ++ if ( !elem ) return; // maybe element was removed ? ++ elem.unselectable = bool ? "off" : "on"; // IE ++ elem.onselectstart = function(){ return bool; }; // IE ++ //if ( document.selection && document.selection.empty ) document.selection.empty(); // IE ++ if ( elem.style ) elem.style.MozUserSelect = bool ? "" : "none"; // FF ++ }; ++ ++/*******************************************************************************************/ ++})( jQuery ); // confine scope diff --cc debian/missing-sources/jquery.mousewheel.js index 0000000,0000000..528defe new file mode 100644 --- /dev/null +++ b/debian/missing-sources/jquery.mousewheel.js @@@ -1,0 -1,0 +1,79 @@@ ++/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) ++ * Licensed under the MIT License (LICENSE.txt). ++ * ++ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. ++ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. ++ * Thanks to: Seamus Leahy for adding deltaX and deltaY ++ * ++ * Version: 3.0.3 ++ * ++ * Requires: 1.2.2+ ++ */ ++ ++(function($) { ++ ++var types = ['DOMMouseScroll', 'mousewheel']; ++ ++$.event.special.mousewheel = { ++ setup: function() { ++ if ( this.addEventListener ) { ++ for ( var i=types.length; i; ) { ++ this.addEventListener( types[--i], handler, false ); ++ } ++ } else { ++ this.onmousewheel = handler; ++ } ++ }, ++ ++ teardown: function() { ++ if ( this.removeEventListener ) { ++ for ( var i=types.length; i; ) { ++ this.removeEventListener( types[--i], handler, false ); ++ } ++ } else { ++ this.onmousewheel = null; ++ } ++ } ++}; ++ ++$.fn.extend({ ++ mousewheel: function(fn) { ++ return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); ++ }, ++ ++ unmousewheel: function(fn) { ++ return this.unbind("mousewheel", fn); ++ } ++}); ++ ++ ++function handler(event) { ++ var orgEvent = event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; ++ ++ event = $.event.fix(event || window.event); ++ event.type = "mousewheel"; ++ ++ // Old school scrollwheel delta ++ if ( event.wheelDelta ) { delta = event.wheelDelta/120; } ++ if ( event.detail ) { delta = -event.detail/3; } ++ ++ // New school multidimensional scroll (touchpads) deltas ++ deltaY = delta; ++ ++ // Gecko ++ if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { ++ deltaY = 0; ++ deltaX = -1*delta; ++ } ++ ++ // Webkit ++ if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; } ++ if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; } ++ ++ // Add event and delta to the front of the arguments ++ args.unshift(event, delta, deltaX, deltaY); ++ ++ return $.event.handle.apply(this, args); ++} ++ ++})(jQuery); diff --cc debian/missing-sources/tablefilter/array.js index 0000000,0000000..dd10bc5 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/tablefilter/array.js @@@ -1,0 -1,0 +1,17 @@@ ++/** ++ * Array utilities ++ */ ++ ++import Str from './string'; ++ ++export default { ++ has: function(arr, val, caseSensitive){ ++ let sCase = caseSensitive===undefined ? false : caseSensitive; ++ for (var i=0; i2){ ++ return yr; ++ } ++ let y; ++ //>50 belong to 1900 ++ if(yr <= 99 && yr>50){ ++ y = '19' + yr; ++ } ++ //<50 belong to 2000 ++ if(yr<50 || yr === '00'){ ++ y = '20' + yr; ++ } ++ return y; ++} ++ ++function mmm2mm(mmm){ ++ if(mmm === undefined){ ++ return 0; ++ } ++ let mondigit; ++ let MONTH_NAMES = [ ++ 'january','february','march','april','may','june','july', ++ 'august','september','october','november','december', ++ 'jan','feb','mar','apr','may','jun','jul','aug','sep','oct', ++ 'nov','dec' ++ ]; ++ for(let m_i=0; m_i < MONTH_NAMES.length; m_i++){ ++ let month_name = MONTH_NAMES[m_i]; ++ if (mmm.toLowerCase() === month_name){ ++ mondigit = m_i+1; ++ break; ++ } ++ } ++ if(mondigit > 11 || mondigit < 23){ ++ mondigit = mondigit - 12; ++ } ++ if(mondigit < 1 || mondigit > 12){ ++ return 0; ++ } ++ return mondigit; ++} diff --cc debian/missing-sources/tablefilter/dom.js index 0000000,0000000..175bda9 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/tablefilter/dom.js @@@ -1,0 -1,0 +1,142 @@@ ++/** ++ * DOM utilities ++ */ ++ ++export default { ++ ++ /** ++ * Returns text + text of children of given node ++ * @param {NodeElement} node ++ * @return {String} ++ */ ++ getText(node){ ++ let s = node.textContent || node.innerText || ++ node.innerHTML.replace(/<[^<>]+>/g, ''); ++ s = s.replace(/^\s+/, '').replace(/\s+$/, ''); ++ return s; ++ }, ++ ++ /** ++ * Creates an html element with given collection of attributes ++ * @param {String} tag a string of the html tag to create ++ * @param {Array} an undetermined number of arrays containing the with 2 ++ * items, the attribute name and its value ['id','myId'] ++ * @return {Object} created element ++ */ ++ create(tag){ ++ if(!tag || tag===''){ ++ return; ++ } ++ ++ let el = document.createElement(tag), ++ args = arguments; ++ ++ if(args.length > 1){ ++ for(let i=0; i { this._setAdvancedGrid(); }); ++ } ++ if(this.loadStylesheet && !tf.isImported(this.stylesheet, 'link')){ ++ tf.import(this.stylesheetName, this.stylesheet, null, 'link'); ++ } ++ } ++ ++ /** ++ * Instantiate ezEditTable component for advanced grid features ++ */ ++ _setAdvancedGrid(){ ++ var tf = this.tf; ++ ++ //start row for EditTable constructor needs to be calculated ++ var startRow, ++ cfg = this.cfg, ++ thead = Dom.tag(tf.tbl, 'thead'); ++ ++ //if thead exists and startRow not specified, startRow is calculated ++ //automatically by EditTable ++ if(thead.length > 0 && !cfg.startRow){ ++ startRow = undefined; ++ } ++ //otherwise startRow config property if any or TableFilter refRow ++ else{ ++ startRow = cfg.startRow || tf.refRow; ++ } ++ ++ cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/'; ++ var editable = cfg.editable; ++ var selectable = cfg.selection; ++ ++ if(selectable){ ++ cfg.default_selection = cfg.default_selection || 'row'; ++ } ++ //CSS Styles ++ cfg.active_cell_css = cfg.active_cell_css || 'ezETSelectedCell'; ++ ++ var _lastValidRowIndex = 0; ++ var _lastRowIndex = 0; ++ ++ if(selectable){ ++ //Row navigation needs to be calculated according to TableFilter's ++ //validRowsIndex array ++ var onAfterSelection = function(et, selectedElm, e){ ++ var slc = et.Selection; ++ //Next valid filtered row needs to be selected ++ var doSelect = function(nextRowIndex){ ++ if(et.defaultSelection === 'row'){ ++ slc.SelectRowByIndex(nextRowIndex); ++ } else { ++ et.ClearSelections(); ++ var cellIndex = selectedElm.cellIndex, ++ row = tf.tbl.rows[nextRowIndex]; ++ if(et.defaultSelection === 'both'){ ++ slc.SelectRowByIndex(nextRowIndex); ++ } ++ if(row){ ++ slc.SelectCell(row.cells[cellIndex]); ++ } ++ } ++ //Table is filtered ++ if(tf.validRowsIndex.length !== tf.getRowsNb()){ ++ var r = tf.tbl.rows[nextRowIndex]; ++ if(r){ ++ r.scrollIntoView(false); ++ } ++ if(cell){ ++ if(cell.cellIndex === (tf.getCellsNb()-1) && ++ tf.gridLayout){ ++ tf.tblCont.scrollLeft = 100000000; ++ } ++ else if(cell.cellIndex===0 && tf.gridLayout){ ++ tf.tblCont.scrollLeft = 0; ++ } else { ++ cell.scrollIntoView(false); ++ } ++ } ++ } ++ }; ++ ++ //table is not filtered ++ if(!tf.validRowsIndex){ ++ return; ++ } ++ var validIndexes = tf.validRowsIndex, ++ validIdxLen = validIndexes.length, ++ row = et.defaultSelection !== 'row' ? ++ selectedElm.parentNode : selectedElm, ++ //cell for default_selection = 'both' or 'cell' ++ cell = selectedElm.nodeName==='TD' ? selectedElm : null, ++ keyCode = e !== undefined ? et.Event.GetKey(e) : 0, ++ isRowValid = validIndexes.indexOf(row.rowIndex) !== -1, ++ nextRowIndex, ++ paging = tf.feature('paging'), ++ //pgup/pgdown keys ++ d = (keyCode === 34 || keyCode === 33 ? ++ (paging && paging.pagingLength || et.nbRowsPerPage) :1); ++ ++ //If next row is not valid, next valid filtered row needs to be ++ //calculated ++ if(!isRowValid){ ++ //Selection direction up/down ++ if(row.rowIndex>_lastRowIndex){ ++ //last row ++ if(row.rowIndex >= validIndexes[validIdxLen-1]){ ++ nextRowIndex = validIndexes[validIdxLen-1]; ++ } else { ++ var calcRowIndex = (_lastValidRowIndex + d); ++ if(calcRowIndex > (validIdxLen-1)){ ++ nextRowIndex = validIndexes[validIdxLen-1]; ++ } else { ++ nextRowIndex = validIndexes[calcRowIndex]; ++ } ++ } ++ } else{ ++ //first row ++ if(row.rowIndex <= validIndexes[0]){ ++ nextRowIndex = validIndexes[0]; ++ } else { ++ var v = validIndexes[_lastValidRowIndex - d]; ++ nextRowIndex = v ? v : validIndexes[0]; ++ } ++ } ++ _lastRowIndex = row.rowIndex; ++ doSelect(nextRowIndex); ++ } else { ++ //If filtered row is valid, special calculation for ++ //pgup/pgdown keys ++ if(keyCode!==34 && keyCode!==33){ ++ _lastValidRowIndex = validIndexes.indexOf(row.rowIndex); ++ _lastRowIndex = row.rowIndex; ++ } else { ++ if(keyCode === 34){ //pgdown ++ //last row ++ if((_lastValidRowIndex + d) <= (validIdxLen-1)){ ++ nextRowIndex = validIndexes[ ++ _lastValidRowIndex + d]; ++ } else { ++ nextRowIndex = [validIdxLen-1]; ++ } ++ } else { //pgup ++ //first row ++ if((_lastValidRowIndex - d) <= validIndexes[0]){ ++ nextRowIndex = validIndexes[0]; ++ } else { ++ nextRowIndex = validIndexes[ ++ _lastValidRowIndex - d]; ++ } ++ } ++ _lastRowIndex = nextRowIndex; ++ _lastValidRowIndex = validIndexes.indexOf(nextRowIndex); ++ doSelect(nextRowIndex); ++ } ++ } ++ }; ++ ++ //Page navigation has to be enforced whenever selected row is out of ++ //the current page range ++ var onBeforeSelection = function(et, selectedElm){ ++ var row = et.defaultSelection !== 'row' ? ++ selectedElm.parentNode : selectedElm; ++ if(tf.paging){ ++ if(tf.feature('paging').nbPages > 1){ ++ var paging = tf.feature('paging'); ++ //page length is re-assigned in case it has changed ++ et.nbRowsPerPage = paging.pagingLength; ++ var validIndexes = tf.validRowsIndex, ++ validIdxLen = validIndexes.length, ++ pagingEndRow = parseInt(paging.startPagingRow, 10) + ++ parseInt(paging.pagingLength, 10); ++ var rowIndex = row.rowIndex; ++ ++ if((rowIndex === validIndexes[validIdxLen-1]) && ++ paging.currentPageNb!==paging.nbPages){ ++ paging.setPage('last'); ++ } ++ else if((rowIndex == validIndexes[0]) && ++ paging.currentPageNb!==1){ ++ paging.setPage('first'); ++ } ++ else if(rowIndex > validIndexes[pagingEndRow-1] && ++ rowIndex < validIndexes[validIdxLen-1]){ ++ paging.setPage('next'); ++ } ++ else if( ++ rowIndex < validIndexes[paging.startPagingRow] && ++ rowIndex > validIndexes[0]){ ++ paging.setPage('previous'); ++ } ++ } ++ } ++ }; ++ ++ //Selected row needs to be visible when paging is activated ++ if(tf.paging){ ++ tf.feature('paging').onAfterChangePage = function(paging){ ++ var advGrid = paging.tf.extension('advancedGrid'); ++ var et = advGrid._ezEditTable; ++ var slc = et.Selection; ++ var row = slc.GetActiveRow(); ++ if(row){ ++ row.scrollIntoView(false); ++ } ++ var cell = slc.GetActiveCell(); ++ if(cell){ ++ cell.scrollIntoView(false); ++ } ++ }; ++ } ++ ++ //Rows navigation when rows are filtered is performed with the ++ //EditTable row selection callback events ++ if(cfg.default_selection==='row'){ ++ var fnB = cfg.on_before_selected_row; ++ cfg.on_before_selected_row = function(){ ++ onBeforeSelection(arguments[0], arguments[1], arguments[2]); ++ if(fnB){ ++ fnB.call( ++ null, arguments[0], arguments[1], arguments[2]); ++ } ++ }; ++ var fnA = cfg.on_after_selected_row; ++ cfg.on_after_selected_row = function(){ ++ onAfterSelection(arguments[0], arguments[1], arguments[2]); ++ if(fnA){ ++ fnA.call( ++ null, arguments[0], arguments[1], arguments[2]); ++ } ++ }; ++ } else { ++ var fnD = cfg.on_before_selected_cell; ++ cfg.on_before_selected_cell = function(){ ++ onBeforeSelection(arguments[0], arguments[1], arguments[2]); ++ if(fnD){ ++ fnD.call( ++ null, arguments[0], arguments[1], arguments[2]); ++ } ++ }; ++ var fnC = cfg.on_after_selected_cell; ++ cfg.on_after_selected_cell = function(){ ++ onAfterSelection(arguments[0], arguments[1], arguments[2]); ++ if(fnC){ ++ fnC.call( ++ null, arguments[0], arguments[1], arguments[2]); ++ } ++ }; ++ } ++ } ++ if(editable){ ++ //Added or removed rows, TF rows number needs to be re-calculated ++ var fnE = cfg.on_added_dom_row; ++ cfg.on_added_dom_row = function(){ ++ tf.nbFilterableRows++; ++ if(!tf.paging){ ++ tf.feature('rowsCounter').refresh(); ++ } else { ++ tf.nbRows++; ++ tf.nbVisibleRows++; ++ tf.nbFilterableRows++; ++ tf.paging=false; ++ tf.feature('paging').destroy(); ++ tf.feature('paging').reset(); ++ } ++ if(tf.alternateRows){ ++ tf.feature('alternateRows').init(); ++ } ++ if(fnE){ ++ fnE.call(null, arguments[0], arguments[1], arguments[2]); ++ } ++ }; ++ if(cfg.actions && cfg.actions['delete']){ ++ var fnF = cfg.actions['delete'].on_after_submit; ++ cfg.actions['delete'].on_after_submit = function(){ ++ tf.nbFilterableRows--; ++ if(!tf.paging){ ++ tf.feature('rowsCounter').refresh(); ++ } else { ++ tf.nbRows--; ++ tf.nbVisibleRows--; ++ tf.nbFilterableRows--; ++ tf.paging=false; ++ tf.feature('paging').destroy(); ++ tf.feature('paging').reset(false); ++ } ++ if(tf.alternateRows){ ++ tf.feature('alternateRows').init(); ++ } ++ if(fnF){ ++ fnF.call(null, arguments[0], arguments[1]); ++ } ++ }; ++ } ++ } ++ ++ try{ ++ this._ezEditTable = new EditTable(tf.id, cfg, startRow); ++ this._ezEditTable.Init(); ++ } catch(e) { throw new Error(this.err); } ++ ++ this.initialized = true; ++ } ++ ++ /** ++ * Reset advanced grid when previously removed ++ */ ++ reset(){ ++ var ezEditTable = this._ezEditTable; ++ if(ezEditTable){ ++ if(this.cfg.selection){ ++ ezEditTable.Selection.Set(); ++ } ++ if(this.cfg.editable){ ++ ezEditTable.Editable.Set(); ++ } ++ } ++ } ++ ++ /** ++ * Remove advanced grid ++ */ ++ destroy(){ ++ var ezEditTable = this._ezEditTable; ++ if(ezEditTable){ ++ if(this.cfg.selection){ ++ ezEditTable.Selection.ClearSelections(); ++ ezEditTable.Selection.Remove(); ++ } ++ if(this.cfg.editable){ ++ ezEditTable.Editable.Remove(); ++ } ++ } ++ this.initialized = false; ++ } ++} diff --cc debian/missing-sources/tablefilter/extensions/advancedGrid/advancedGrid.js index 0000000,0000000..e548ef4 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/tablefilter/extensions/advancedGrid/advancedGrid.js @@@ -1,0 -1,0 +1,3 @@@ ++import AdapterEzEditTable from './adapterEzEditTable'; ++ ++export default AdapterEzEditTable; diff --cc debian/missing-sources/tablefilter/extensions/colOps/colOps.js index 0000000,0000000..aa9ca66 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/tablefilter/extensions/colOps/colOps.js @@@ -1,0 -1,0 +1,315 @@@ ++import Dom from '../../dom'; ++import Str from '../../string'; ++import Types from '../../types'; ++ ++export default class ColOps{ ++ ++ /** ++ * Column calculations ++ * @param {Object} tf TableFilter instance ++ */ ++ constructor(tf, opts) { ++ ++ //calls function before col operation ++ this.onBeforeOperation = Types.isFn(opts.on_before_operation) ? ++ opts.on_before_operation : null; ++ //calls function after col operation ++ this.onAfterOperation = Types.isFn(opts.on_after_operation) ? ++ opts.on_after_operation : null; ++ ++ this.opts = opts; ++ this.tf = tf; ++ } ++ ++ init(){ ++ this.calc(); ++ } ++ ++ /** ++ * Calculates columns' values ++ * Configuration options are stored in 'opts' property ++ * - 'id' contains ids of elements showing result (array) ++ * - 'col' contains the columns' indexes (array) ++ * - 'operation' contains operation type (array, values: 'sum', 'mean', ++ * 'min', 'max', 'median', 'q1', 'q3') ++ * - 'write_method' array defines which method to use for displaying the ++ * result (innerHTML, setValue, createTextNode) - default: 'innerHTML' ++ * - 'tot_row_index' defines in which row results are displayed ++ * (integers array) ++ * ++ * - changes made by Nuovella: ++ * (1) optimized the routine (now it will only process each column once), ++ * (2) added calculations for the median, lower and upper quartile. ++ */ ++ calc() { ++ var tf = this.tf; ++ if(!tf.isFirstLoad && !tf.hasGrid()){ ++ return; ++ } ++ ++ if(this.onBeforeOperation){ ++ this.onBeforeOperation.call(null, tf); ++ } ++ ++ var opts = this.opts, ++ labelId = opts.id, ++ colIndex = opts.col, ++ operation = opts.operation, ++ outputType = opts.write_method, ++ totRowIndex = opts.tot_row_index, ++ excludeRow = opts.exclude_row, ++ decimalPrecision = Types.isUndef(opts.decimal_precision) ? ++ 2 : opts.decimal_precision; ++ ++ //nuovella: determine unique list of columns to operate on ++ var ucolIndex = [], ++ ucolMax = 0; ++ ucolIndex[ucolMax] = colIndex[0]; ++ ++ for(var ii=1; ii maxValue ? ++ parseFloat( cvalue ): maxValue; ++ } ++ } ++ } ++ }//for j ++ if(meanFlag===1){ ++ meanValue = sumValue/nbvalues; ++ } ++ if(medFlag===1){ ++ var aux = 0; ++ if(nbvalues%2 === 1){ ++ aux = Math.floor(nbvalues/2); ++ medValue = theList[aux]; ++ } else{ ++ medValue = ++ (theList[nbvalues/2] + theList[((nbvalues/2)-1)])/2; ++ } ++ } ++ var posa; ++ if(q1Flag===1){ ++ posa=0.0; ++ posa = Math.floor(nbvalues/4); ++ if(4*posa == nbvalues){ ++ q1Value = (theList[posa-1] + theList[posa])/2; ++ } else { ++ q1Value = theList[posa]; ++ } ++ } ++ if (q3Flag===1){ ++ posa=0.0; ++ var posb=0.0; ++ posa = Math.floor(nbvalues/4); ++ if (4*posa === nbvalues){ ++ posb = 3*posa; ++ q3Value = (theList[posb] + theList[posb-1])/2; ++ } else { ++ q3Value = theList[nbvalues-posa-1]; ++ } ++ } ++ ++ for(var i=0; i<=mThisCol; i++){ ++ switch( opsThisCol[i] ){ ++ case 'mean': ++ result=meanValue; ++ break; ++ case 'sum': ++ result=sumValue; ++ break; ++ case 'min': ++ result=minValue; ++ break; ++ case 'max': ++ result=maxValue; ++ break; ++ case 'median': ++ result=medValue; ++ break; ++ case 'q1': ++ result=q1Value; ++ break; ++ case 'q3': ++ result=q3Value; ++ break; ++ } ++ ++ var precision = !isNaN(decThisCol[i]) ? decThisCol[i] : 2; ++ ++ //if outputType is defined ++ if(oTypeThisCol && result){ ++ result = result.toFixed( precision ); ++ ++ if(Dom.id(labThisCol[i])){ ++ switch( Str.lower(oTypeThisCol) ){ ++ case 'innerhtml': ++ if (isNaN(result) || !isFinite(result) || ++ nbvalues===0){ ++ Dom.id(labThisCol[i]).innerHTML = '.'; ++ } else{ ++ Dom.id(labThisCol[i]).innerHTML= result; ++ } ++ break; ++ case 'setvalue': ++ Dom.id( labThisCol[i] ).value = result; ++ break; ++ case 'createtextnode': ++ var oldnode = Dom.id(labThisCol[i]) ++ .firstChild; ++ var txtnode = Dom.text(result); ++ Dom.id(labThisCol[i]) ++ .replaceChild(txtnode, oldnode); ++ break; ++ }//switch ++ } ++ } else { ++ try{ ++ if(isNaN(result) || !isFinite(result) || ++ nbvalues===0){ ++ Dom.id(labThisCol[i]).innerHTML = '.'; ++ } else { ++ Dom.id(labThisCol[i]).innerHTML = ++ result.toFixed(precision); ++ } ++ } catch(e) {}//catch ++ }//else ++ }//for i ++ ++ // row(s) with result are always visible ++ var totRow = totRowIndex && totRowIndex[ucol] ? ++ rows[totRowIndex[ucol]] : null; ++ if(totRow){ ++ totRow.style.display = ''; ++ } ++ }//for ucol ++ }//if typeof ++ ++ if(this.onAfterOperation){ ++ this.onAfterOperation.call(null, tf); ++ } ++ } ++ ++ destroy(){} ++ ++} diff --cc debian/missing-sources/tablefilter/extensions/colsVisibility/colsVisibility.js index 0000000,0000000..5181861 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/tablefilter/extensions/colsVisibility/colsVisibility.js @@@ -1,0 -1,0 +1,520 @@@ ++import Dom from '../../dom'; ++import Types from '../../types'; ++import Event from '../../event'; ++ ++export default class ColsVisibility{ ++ ++ /** ++ * Columns Visibility extension ++ * @param {Object} tf TableFilter instance ++ * @param {Object} f Config ++ */ ++ constructor(tf, f){ ++ ++ // Configuration object ++ var cfg = tf.config(); ++ ++ this.initialized = false; ++ this.name = f.name; ++ this.desc = f.description || 'Columns visibility manager'; ++ ++ //show/hide cols span element ++ this.spanEl = null; ++ //show/hide cols button element ++ this.btnEl = null; ++ //show/hide cols container div element ++ this.contEl = null; ++ ++ //tick to hide or show column ++ this.tickToHide = f.tick_to_hide===false ? false : true; ++ //enables/disables cols manager generation ++ this.manager = f.manager===false ? false : true; ++ //only if external headers ++ this.headersTbl = f.headers_table || false; ++ //only if external headers ++ this.headersIndex = f.headers_index || 1; ++ //id of container element ++ this.contElTgtId = f.container_target_id || null; ++ //alternative headers text ++ this.headersText = f.headers_text || null; ++ //id of button container element ++ this.btnTgtId = f.btn_target_id || null; ++ //defines show/hide cols text ++ this.btnText = f.btn_text || 'Columns▼'; ++ //defines show/hide cols button innerHtml ++ this.btnHtml = f.btn_html || null; ++ //defines css class for show/hide cols button ++ this.btnCssClass = f.btn_css_class || 'colVis'; ++ //defines close link text ++ this.btnCloseText = f.btn_close_text || 'Close'; ++ //defines close button innerHtml ++ this.btnCloseHtml = f.btn_close_html || null; ++ //defines css class for close button ++ this.btnCloseCssClass = f.btn_close_css_class || this.btnCssClass; ++ this.stylesheet = f.stylesheet || 'colsVisibility.css'; ++ //span containing show/hide cols button ++ this.prfx = 'colVis_'; ++ //defines css class span containing show/hide cols ++ this.spanCssClass = f.span_css_class || 'colVisSpan'; ++ this.prfxCont = this.prfx + 'Cont_'; ++ //defines css class div containing show/hide cols ++ this.contCssClass = f.cont_css_class || 'colVisCont'; ++ //defines css class for cols list (ul) ++ this.listCssClass = cfg.list_css_class ||'cols_checklist'; ++ //defines css class for list item (li) ++ this.listItemCssClass = cfg.checklist_item_css_class || ++ 'cols_checklist_item'; ++ //defines css class for selected list item (li) ++ this.listSlcItemCssClass = cfg.checklist_selected_item_css_class || ++ 'cols_checklist_slc_item'; ++ //text preceding columns list ++ this.text = f.text || (this.tickToHide ? 'Hide: ' : 'Show: '); ++ this.atStart = f.at_start || null; ++ this.enableHover = Boolean(f.enable_hover); ++ //enables select all option ++ this.enableTickAll = Boolean(f.enable_tick_all); ++ //text preceding columns list ++ this.tickAllText = f.tick_all_text || 'Select all:'; ++ ++ //array containing hidden columns indexes ++ this.hiddenCols = []; ++ this.tblHasColTag = (Dom.tag(tf.tbl,'col').length > 0); ++ ++ //callback invoked just after cols manager is loaded ++ this.onLoaded = Types.isFn(f.on_loaded) ? f.on_loaded : null; ++ //calls function before cols manager is opened ++ this.onBeforeOpen = Types.isFn(f.on_before_open) ? ++ f.on_before_open : null; ++ //calls function after cols manager is opened ++ this.onAfterOpen = Types.isFn(f.on_after_open) ? f.on_after_open : null; ++ //calls function before cols manager is closed ++ this.onBeforeClose = Types.isFn(f.on_before_close) ? ++ f.on_before_close : null; ++ //calls function after cols manager is closed ++ this.onAfterClose = Types.isFn(f.on_after_close) ? ++ f.on_after_close : null; ++ ++ //callback before col is hidden ++ this.onBeforeColHidden = Types.isFn(f.on_before_col_hidden) ? ++ f.on_before_col_hidden : null; ++ //callback after col is hidden ++ this.onAfterColHidden = Types.isFn(f.on_after_col_hidden) ? ++ f.on_after_col_hidden : null; ++ //callback before col is displayed ++ this.onBeforeColDisplayed = Types.isFn(f.on_before_col_displayed) ? ++ f.on_before_col_displayed : null; ++ //callback after col is displayed ++ this.onAfterColDisplayed = Types.isFn(f.on_after_col_displayed) ? ++ f.on_after_col_displayed : null; ++ ++ //Grid layout compatibility ++ if(tf.gridLayout){ ++ this.headersTbl = tf.feature('gridLayout').headTbl; //headers table ++ this.headersIndex = 0; //headers index ++ this.onAfterColDisplayed = function(){}; ++ this.onAfterColHidden = function(){}; ++ } ++ ++ //Loads extension stylesheet ++ tf.import(f.name+'Style', tf.stylePath + this.stylesheet, null, 'link'); ++ ++ this.tf = tf; ++ } ++ ++ toggle(){ ++ var contDisplay = this.contEl.style.display; ++ var onBeforeOpen = this.onBeforeOpen; ++ var onBeforeClose = this.onBeforeClose; ++ var onAfterOpen = this.onAfterOpen; ++ var onAfterClose = this.onAfterClose; ++ ++ if(onBeforeOpen && contDisplay !== 'inline'){ ++ onBeforeOpen.call(null, this); ++ } ++ if(onBeforeClose && contDisplay === 'inline'){ ++ onBeforeClose.call(null, this); ++ } ++ ++ this.contEl.style.display = contDisplay === 'inline' ? ++ 'none' : 'inline'; ++ ++ if(onAfterOpen && contDisplay !== 'inline'){ ++ onAfterOpen.call(null, this); ++ } ++ if(onAfterClose && contDisplay === 'inline'){ ++ onAfterClose.call(null, this); ++ } ++ } ++ ++ checkItem(lbl){ ++ var li = lbl.parentNode; ++ if(!li || !lbl){ ++ return; ++ } ++ var isChecked = lbl.firstChild.checked; ++ var colIndex = lbl.firstChild.getAttribute('id').split('_')[1]; ++ colIndex = parseInt(colIndex, 10); ++ if(isChecked){ ++ Dom.addClass(li, this.listSlcItemCssClass); ++ } else { ++ Dom.removeClass(li, this.listSlcItemCssClass); ++ } ++ ++ var hide = false; ++ if((this.tickToHide && isChecked) || (!this.tickToHide && !isChecked)){ ++ hide = true; ++ } ++ this.setHidden(colIndex, hide); ++ } ++ ++ init(){ ++ if(!this.manager){ ++ return; ++ } ++ this.buildBtn(); ++ this.buildManager(); ++ ++ this.initialized = true; ++ } ++ ++ /** ++ * Build main button UI ++ */ ++ buildBtn(){ ++ if(this.btnEl){ ++ return; ++ } ++ var tf = this.tf; ++ var span = Dom.create('span', ['id', this.prfx+tf.id]); ++ span.className = this.spanCssClass; ++ ++ //Container element (rdiv or custom element) ++ if(!this.btnTgtId){ ++ tf.setToolbar(); ++ } ++ var targetEl = !this.btnTgtId ? tf.rDiv : Dom.id(this.btnTgtId); ++ ++ if(!this.btnTgtId){ ++ var firstChild = targetEl.firstChild; ++ firstChild.parentNode.insertBefore(span, firstChild); ++ } else { ++ targetEl.appendChild(span); ++ } ++ ++ if(!this.btnHtml){ ++ var btn = Dom.create('a', ['href','javascript:;']); ++ btn.className = this.btnCssClass; ++ btn.title = this.desc; ++ ++ btn.innerHTML = this.btnText; ++ span.appendChild(btn); ++ if(!this.enableHover){ ++ Event.add(btn, 'click', (evt)=> { this.toggle(evt); }); ++ } else { ++ Event.add(btn, 'mouseover', (evt)=> { this.toggle(evt); }); ++ } ++ } else { //Custom html ++ span.innerHTML = this.btnHtml; ++ var colVisEl = span.firstChild; ++ if(!this.enableHover){ ++ Event.add(colVisEl, 'click', (evt)=> { this.toggle(evt); }); ++ } else { ++ Event.add(colVisEl, 'mouseover', (evt)=> { this.toggle(evt); }); ++ } ++ } ++ ++ this.spanEl = span; ++ this.btnEl = this.spanEl.firstChild; ++ ++ if(this.onLoaded){ ++ this.onLoaded.call(null, this); ++ } ++ } ++ ++ /** ++ * Build columns manager UI ++ */ ++ buildManager(){ ++ var tf = this.tf; ++ ++ var container = !this.contElTgtId ? ++ Dom.create('div', ['id', this.prfxCont+tf.id]) : ++ Dom.id(this.contElTgtId); ++ container.className = this.contCssClass; ++ ++ //Extension description ++ var extNameLabel = Dom.create('p'); ++ extNameLabel.innerHTML = this.text; ++ container.appendChild(extNameLabel); ++ ++ //Headers list ++ var ul = Dom.create('ul' ,['id', 'ul'+this.name+'_'+tf.id]); ++ ul.className = this.listCssClass; ++ ++ var tbl = this.headersTbl ? this.headersTbl : tf.tbl; ++ var headerIndex = this.headersTbl ? ++ this.headersIndex : tf.getHeadersRowIndex(); ++ var headerRow = tbl.rows[headerIndex]; ++ ++ //Tick all option ++ if(this.enableTickAll){ ++ var li = Dom.createCheckItem( ++ 'col__'+tf.id, this.tickAllText, this.tickAllText); ++ Dom.addClass(li, this.listItemCssClass); ++ ul.appendChild(li); ++ li.check.checked = !this.tickToHide; ++ ++ Event.add(li.check, 'click', ()=> { ++ for(var h = 0; h < headerRow.cells.length; h++){ ++ var itm = Dom.id('col_'+h+'_'+tf.id); ++ if(itm && li.check.checked !== itm.checked){ ++ itm.click(); ++ itm.checked = li.check.checked; ++ } ++ } ++ }); ++ } ++ ++ for(var i = 0; i < headerRow.cells.length; i++){ ++ var cell = headerRow.cells[i]; ++ var cellText = this.headersText && this.headersText[i] ? ++ this.headersText[i] : this._getHeaderText(cell); ++ var liElm = Dom.createCheckItem( ++ 'col_'+i+'_'+tf.id, cellText, cellText); ++ Dom.addClass(liElm, this.listItemCssClass); ++ if(!this.tickToHide){ ++ Dom.addClass(liElm, this.listSlcItemCssClass); ++ } ++ ul.appendChild(liElm); ++ if(!this.tickToHide){ ++ liElm.check.checked = true; ++ } ++ ++ Event.add(liElm.check, 'click', (evt)=> { ++ var elm = Event.target(evt); ++ var lbl = elm.parentNode; ++ this.checkItem(lbl); ++ }); ++ } ++ ++ //separator ++ var p = Dom.create('p', ['align','center']); ++ var btn; ++ //Close link ++ if(!this.btnCloseHtml){ ++ btn = Dom.create('a', ['href','javascript:;']); ++ btn.className = this.btnCloseCssClass; ++ btn.innerHTML = this.btnCloseText; ++ Event.add(btn, 'click', (evt)=> { this.toggle(evt); }); ++ p.appendChild(btn); ++ } else { ++ p.innerHTML = this.btnCloseHtml; ++ btn = p.firstChild; ++ Event.add(btn, 'click', (evt)=> { this.toggle(evt); }); ++ } ++ ++ container.appendChild(ul); ++ container.appendChild(p); ++ ++ this.btnEl.parentNode.insertBefore(container, this.btnEl); ++ this.contEl = container; ++ ++ if(this.atStart){ ++ var a = this.atStart; ++ for(var k=0; k