oxjs/readme/index/about.html
2012-06-24 19:12:23 +02:00

13 lines
5.3 KiB
HTML

<h1><b>OxJS &mdash; A JavaScript Library for Web Applications</b></h1>
<p>TL;DR: <code>OxJS</code> is awesome &mdash; <a href="https://0xDB.org" target="_blank">see it in action</a>!</b></p>
<p><code>OxJS</code> (pronounced <i>oh-ex-jay-ess</i>) is a comprehensive JavaScript library, originally developed for the media archive platform <a href="http://pan.do/ra" target="_blank">pan.do/ra</a>. While it still has bugs, holes, design errors and lots of cruft, some parts of it may already be of interest to a wider audience.</p>
<p>The core of <code>OxJS</code> is <code>Ox.js</code>, a general-purpose utility library. It <a href="#doc/Ox.loop">embraces</a> <a href="#doc/Ox.forEach">functional</a> <a href="#doc/Ox.map">programming</a>, <a href="#doc/Ox.load">supports modules</a>, <a href="#doc/Ox.getDateInWeek">provides</a> <a href="#doc/Ox.getDayOfTheYear">lots</a> <a href="#doc/Ox.getDaysInMonth">of</a> <a href="#doc/Ox.getDaysInYear">tools</a> <a ref="#doc/Ox.getISODate">to</a> <a href="#doc/Ox.getISOWeek">deal</a> <a href="#doc/Ox.parseDate">with</a> <a href="#doc/Ox.formatDate">dates</a>, <a href="#doc/Ox.atanh">has</a> <a href="#doc/Ox.deg">all</a> <a href="#doc/Ox.limit">the</a> <a href="#doc/Ox.mod">missing</a> <a href="#doc/Ox.sign">math</a> <a href="#doc/Ox.trunc">methods</a> (<a href="#doc/Ox.getBearing">plus</a> <a href="#doc/Ox.getCircle">some</a> <a href="#doc/Ox.getDistance">more</a> <a href="#doc/Ox.getLine">for</a> <a href="#doc/Ox.getDegreesPerMeter">geographic</a> <a href="#doc/Ox.getLatLngByXY">coordinates</a>) <a href="#doc/Ox.pad">and</a> <a href="#doc/Ox.repeat">helper</a> <a href="#doc/Ox.startsWith">functions</a> <a href="#doc/Ox.truncate">for</a> <a href="#doc/Ox.wordwrap">strings</a> <a href="#doc/Ox.escapeRegExp">and regular expressions</a>, <a href="#doc/Ox.isEmpty">fixes</a> <a href="#doc/Ox.isInt">type</a> <a href="#doc/Ox.typeOf">detection</a> <a href="#doc/Ox.isEqual">and equality testing</a>, <a href="#doc/Ox.addLinks">includes</a> <a href="#doc/Ox.encodeHTMLEntities">utilities</a> <a href="#doc/Ox.highlight">to</a> <a href="#doc/Ox.normalizeHTML">handle</a> <a href="#doc/Ox.sanitizeHTML">HTML</a>, <a href="#doc/Ox.$">the DOM</a> <a href="#doc/Ox.getJSON">and</a> <a href="#doc/Ox.getJSONC">remote</a> <a href="#doc/Ox.getJSONP">requests</a>, can <a href="#doc/Ox.tokenize">tokenize</a> and <a href="#doc/Ox.minify">minify</a> JavaScript, comes with its own <a href="#doc/Ox.doc">documentation format</a>, including <a href="#doc/Ox.test">inline tests</a>, <a href="#doc/Ox.api">and</a> <a href="#doc/Ox.getset">does</a> <a href="#doc/Ox.getAsync">many</a> <a href="#doc/Ox.getFile">other</a> <a href="#doc/Ox.encodeDeflate">cool</a> <a href="#doc/Ox.encodeUTF8">things</a>.</p>
<p>Then there are modules, most notably <code>Ox.UI</code>, which makes it super simple to write complex, desktop-class web applications for HTML5-compliant browsers. <code>Ox.UI</code> has tons of highly customizable and <a href="#doc/Ox.Theme">fully themable</a> widgets: <a href="#doc/Ox.ArrayInput">all</a> <a href="#doc/Ox.DateInput">the</a> <a href="#doc/Ox.FileInput">form</a> <a href="#doc/Ox.ObjectInput">elements</a> <a href="#doc/Ox.SelectInput">you</a> <a href="#doc/Ox.Range">ever</a> <a href="#doc/Ox.Spreadsheet">wanted</a>, <a href="#doc/Ox.MainMenu">menus</a> that actually work, resizable <a href="#doc/Ox.SplitPanel">panels</a> and <a href="#doc/Ox.Dialog">dialogs</a>, <a href="#doc/Ox.IconList">lists</a> and <a href="#doc/Ox.TextList">tables</a> that can hold millions of items, <a href="#doc/Ox.Map">maps</a> and <a href="#doc/Ox.Calendar">calendars</a> done right, a feature-rich <a href="#doc/Ox.VideoPlayer">video player</a>, <a href="#doc/Ox.Chart">and</a> <a href="#doc/Ox.SourceViewer">lots</a> <a href="#doc/Ox.SyntaxHighlighter">more</a>. These widgets allow you to focus on your application and argue less with the DOM. And if you need to, <a href="#doc/Ox.Element">each of them</a> provides the exact same API as a <a href="#doc/Ox.JQueryElement">jQuery DOM object</a>. But <code>Ox.UI</code> also provides the logic to bring these elements together, including custom events, <a href="#doc/Ox.Keyboard">keyboard</a> <a href="#doc/Ox.Focus">focus</a>, <a href="#doc/Ox.API">remote API discovery</a> and <a href="#doc/Ox.URL">client-side URL handling</a>. As long as your backend speaks JSON, it doesn't have to speak any HTML whatsoever.</p>
<p>Among the other modules, <code>Ox.Unicode</code> helps with <a href="#doc/Ox.toASCII">converting</a> or <a href="#doc/Ox.sortASCII">sorting</a> unicode strings, <code>Ox.Image</code> can do <a href="#doc/Ox.Image">basic</a> <a href="#examples/image_manipulation">image manipulation</a>, including <a href="#examples/steganography">steganography</a>, and <code>Ox.Geo</code> comes into play if you're dealing with <a href="#doc/Ox.getCountryByName">geographical data</a>, or want to use a <a href="#examples/countries">really nice set</a> of <a href="#doc/Ox.getFlagByCountryCode">flag icons</a>.</p>
<p>Finally, there is a small but growing number of <a href="#readme">articles</a> and <a href="#examples">tutorials</a>, and extensive (albeit still incomplete) <a href="#doc">documentation</a>. If you want to get involved, file bugs or submit patches, please head over to the <a href="#development">development</a> section. Your feedback is welcome!</p>