diff --git a/readme/documentation.html b/readme/documentation.html new file mode 100644 index 00000000..64abfb98 --- /dev/null +++ b/readme/documentation.html @@ -0,0 +1,3 @@ +
Nothing to see here yet, please move along...
\ No newline at end of file diff --git a/readme/getting_started.html b/readme/getting_started.html new file mode 100644 index 00000000..585ed539 --- /dev/null +++ b/readme/getting_started.html @@ -0,0 +1,3 @@ +Nothing to see here yet, please move along...
\ No newline at end of file diff --git a/readme/test1.html b/readme/test1.html deleted file mode 100644 index d7fe0a39..00000000 --- a/readme/test1.html +++ /dev/null @@ -1,389 +0,0 @@ -Foo bar baz.
- -foo: // this is some code
blockquote- -test - -
-/*
-
-*/
-
-'use strict';
-
-/*
-We have to load the Geo module to get Ox.COUNTRIES
-*/
-Ox.load({UI: {}, Geo: {}}, function() {
-
- var countries = Ox.COUNTRIES.filter(function(country) {
- /*
- We filter out some types of countries that we're not interested in.
- */
- return !country.disputed
- && !country.dissolved
- && !country.exception
- && country.code.length == 2
- }).map(function(country) {
- /*
- For independent countries, the dependency property is undefined. We
- want an empty array though, so that the type of this column gets
- correctly detected as array.
- */
- country.dependency = country.dependency || [];
- /*
- When sorting the list by region, we want the regions to be grouped
- by continent. To get this sort order, we set the value for region to
- 'Continent, Region'. Later, a format function for the region column
- will remove the continent part again.
- */
- country.region = country.continent + ', ' + country.region;
- return country;
- }),
- api = Ox.api(countries, {sort: ['+name'], unique: 'code'}),
- $list = Ox.TextList({
- columns: [
- {
- /*
- The format function of a column has a second argument
- which contains the values of all columns. This allows us
- to format a value dependent on other values. In this
- case, we want to display a flag, and while our items
- don't have a flag property, the Geo module allows us to
- derive it from the name property. The flag image needs a
- tooltip (which is why we can't use an $('
') here),
- and gets some CSS adjustments.
- */
- format: function(value, data) {
- return Ox.Element({
- element: '
',
- tooltip:
- '
'
- })
- .attr({
- src: Ox.getFlagByGeoname(data.name, 16)
- })
- .css({
- width: '14px',
- height: '14px',
- marginLeft: '-3px'
- })
- },
- /*
- As the actual key for the column, we use the country
- code, not the country name, since we still want to
- display the name in its own column.
- */
- id: 'flagURL',
- operator: '+',
- removable: false,
- /*
- We want the column title to be a flag symbol, so we
- specify this as the titleImage. We can pick anything
- from the collection of symbols that comes with Ox.UI.
- The column still needs a textual title that will be
- displayed in the menu that allows to show or hide
- specific columns.
- */
- title: 'Flag',
- titleImage: 'flag',
- /*
- The country code is the unique key of our country table.
- In consequence, whenever the list fires a select event,
- it will reference this value as the item's id.
- */
- unique: true,
- visible: true,
- width: 16
- },
- {
- id: 'code',
- operator: '+',
- title: 'Code',
- unique: true,
- visible: true,
- width: 64
- },
- {
- id: 'name',
- /*
- The operator indicates that we want the default sort
- order of this column to be ascending.
- */
- operator: '+',
- /*
- As it wouldn't make much sense to display the list
- without the name column, we make it non-removable.
- */
- removable: false,
- title: 'Name',
- visible: true,
- width: 256
- },
- {
- id: 'continent',
- operator: '+',
- title: 'Continent',
- visible: true,
- width: 96
- },
- {
- /*
- To tweak the sort order for this column, we had changed
- the value for region to 'Continent, Region'. The format
- function now reverts that change.
- */
- format: function(value) {
- return value.split(', ')[1];
- },
- id: 'region',
- operator: '+',
- title: 'Region',
- visible: true,
- width: 160
- },
- {
- /*
- As the value is a number, it should be right-aligned.
- */
- align: 'right',
- /*
- To get from square meters to something human-readable,
- we use one of the built-in format functions.
- */
- format: function(value) {
- return Ox.formatArea(value);
- },
- id: 'area',
- operator: '-',
- title: 'Area',
- visible: true,
- width: 112
- },
- {
- format: function(value) {
- return Ox.formatDegrees(value, 'lat');
- },
- align: 'right',
- id: 'lat',
- operator: '-',
- title: 'Latitude',
- visible: true,
- width: 80
- },
- {
- format: function(value) {
- return Ox.formatDegrees(value, 'lng');
- },
- align: 'right',
- id: 'lng',
- operator: '+',
- title: 'Longitude',
- visible: true,
- width: 80
- },
- /*
- For the next four columns, which seem less important, we
- omit the 'visible' option, which defaults to false. They can
- still be made visible, they're just not visible by default.
- */
- {
- align: 'right',
- format: function(value) {
- return Ox.formatDegrees(value, 'lat');
- },
- id: 'south',
- operator: '-',
- title: 'South',
- width: 80
- },
- {
- align: 'right',
- format: function(value) {
- return Ox.formatDegrees(value, 'lat');
- },
- id: 'north',
- operator: '-',
- title: 'North',
- width: 80
- },
- {
- align: 'right',
- format: function(value) {
- return Ox.formatDegrees(value, 'lng');
- },
- id: 'west',
- operator: '-',
- title: 'West',
- width: 80
- },
- {
- align: 'right',
- format: function(value) {
- return Ox.formatDegrees(value, 'lng');
- },
- id: 'east',
- operator: '-',
- title: 'East',
- width: 80
- },
- {
- /*
- The dependency property is an array of country names,
- for each of which we want to display a flag. So we use a
- similar constuction as above, and wrap the images in a
- $('') element.
- */
- format: function(value) {
- var ret = '';
- if (value) {
- var ret = $('').css({marginLeft: '-4px'});
- value.forEach(function(country) {
- Ox.Element({
- element: '
',
- tooltip: country
- })
- .attr({
- src: Ox.getFlagByGeoname(country, 16)
- })
- .css({
- width: '14px',
- height: '14px',
- margin: '1px'
- })
- .appendTo(ret);
- });
- }
- return ret;
- },
- id: 'dependency',
- operator: '+',
- title: 'Dependency of',
- visible: true,
- width: 112
- }
- ],
- /*
- This allows the user to move the columns around
- */
- columnsMovable: true,
- /*
- This enables the UI to show or hide specific columns
- */
- columnsRemovable: true,
- /*
- This makes sure the column titles get displayed
- */
- columnsVisible: true,
- items: api,
- /*
- Pagination is useful when a list is so big that only parts of it
- can be requested or displayed. Since this is not the case here,
- we set the page length to a sufficiently large number.
- */
- pageLength: Ox.COUNTRIES.length,
- scrollbarVisible: true,
- /*
- We have to specify the default sort order.
- */
- sort: [{key: 'name', operator: '+'}]
- })
- .bindEvent({
- /*
- The init event of a list fires when the items function has
- returned the total number of items. If we're dealing with a
- remote API, a complex query, a huge dataset or a range request
- for paginated results according to a non-trivial sort order,
- this may happen quite a bit before any items are returned. Here,
- we simply display the number of items in the status bar.
- */
- init: function(data) {
- $status.html(
- (data.items || 'No') + ' countr'
- + (data.items == 1 ? 'y' : 'ies')
- );
- }
- }),
- /*
- We want the user to be able to pick if dependent countries are included
- in the list or not. So we add a checkbox, and bind the find function to
- its change event.
- */
- $include = Ox.Checkbox({
- title: 'Include Dependencies',
- value: true
- })
- .css({float: 'left', margin: '4px'})
- .bindEvent({
- change: find
- }),
- /*
- We want a search field with find-as-you-type, so we use an input element
- and set its changeOnKeypress option to true.
- */
- $find = Ox.Input({
- changeOnKeypress: true,
- placeholder: 'Find',
- width: 192
- })
- .css({float: 'right', margin: '4px'})
- .bindEvent({
- change: find
- }),
- /*
- ...
- */
- $toolbar = Ox.Bar({size: 24}).append($include).append($find),
- $status = $('').css({
- marginTop: '2px',
- fontSize: '9px',
- textAlign: 'center'
- }),
- $statusbar = Ox.Bar({size: 16}).append($status),
- $panel = Ox.SplitPanel({
- elements: [
- {element: $toolbar, size: 24},
- {element: $list},
- {element: $statusbar, size: 16}
- ],
- orientation: 'vertical'
- })
- .appendTo(Ox.$body);
-
- function find() {
- /*
- The find function is bound to the change events of the $include checkbox
- and the $find input field. In both cases, the value will be passed, but
- since we need both values, we disregard it and query both elements for
- their value. If the $include box is not checked, we add a second
- condition that matches only independent countries.
- */
- var conditions = [
- {key: 'name', operator: '=', value: $find.options('value')},
- ];
- !$include.options('value') && conditions.push(
- {key: 'dependency', operator: '=', value: void 0}
- );
- /*
- ...
- */
- api({
- keys: [],
- query: {conditions: conditions, operator: '&'}
- }, function(result) {
- $list.options({
- items: Ox.api(
- result.data.items, {sort: '+name', unique: 'code'}
- )
- });
- });
- }
-
-});
-
\ No newline at end of file
diff --git a/readme/test2.html b/readme/test2.html
deleted file mode 100644
index 93e16d10..00000000
--- a/readme/test2.html
+++ /dev/null
@@ -1,67 +0,0 @@
-Before and After
-
-// before:
-for (var i == 0; i < bigArray.length; i++) {
- if (bigArray[i].isSelected) {
- bigArray[i].onDeselect = (function(i) {
- return function() {
- doSomething(i);
- }
- })(i);
- }
- if (!bigArray[i].isSelectable) {
- break;
- }
-}
-// after:
-Ox.forEach(bigArray, function(v, i) {
- if (v.isSelected) {
- v.onDeselect = function() {
- doSomething(i);
- };
- }
- return v.isSelectable;
-});
-
-// before:
-var exists = array.indexOf(value) > -1;
-// after:
-var exists = Ox.contains(array, value);
-
-// before:
-var key;
-for (var k in obj) {
- if (obj[k] === value) {
- key = k;
- break;
- }
-}
-// after:
-var key = Ox.keyOf(object, value);
-
-
-// before:
-var last = arrayWithLongName[arrayWithLongName.length - 1];
-// after:
-var last = Ox.last(arrayWithLongName);
-
-// before:
-arrayWithLongName[arrayWithLongName.length - 1] = 0;
-// after:
-Ox.last(arrayWithLongName, 0);
-
-// before:
-myNumber = Math.min(Math.max(myNumber, min), max);
-// after:
-myNumber = Ox.limit(myNumber, min, max);
-
-// before:
-var random = min + Math.floor(Math.random() * (max - min));
-// after:
-var random = Ox.random(min, max);
-
-// before:
-var mod = -1 % 10 // -1;
-// after:
-var mod = Ox.mod(-1, 10) // 9
-