Add geode-book dir for docs build
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/d9d8b59b Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/d9d8b59b Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/d9d8b59b Branch: refs/heads/release/1.0.0-incubating Commit: d9d8b59b325c0581ff54c97db91b52adb0f4714c Parents: fd8927c Author: Joey McAllister <jmcallis...@pivotal.io> Authored: Tue Oct 11 13:34:06 2016 -0700 Committer: Joey McAllister <jmcallis...@pivotal.io> Committed: Tue Oct 11 13:34:06 2016 -0700 ---------------------------------------------------------------------- geode-book/.gitignore | 2 + geode-book/Gemfile | 5 + geode-book/Gemfile.lock | 203 ++ geode-book/config.yml | 23 + .../master_middleman/source/images/favicon.ico | Bin 0 -> 1317 bytes .../master_middleman/source/index.html.erb | 7 + .../master_middleman/source/javascripts/book.js | 16 + .../source/javascripts/waypoints/context.js | 300 ++ .../source/javascripts/waypoints/group.js | 105 + .../javascripts/waypoints/noframeworkAdapter.js | 213 ++ .../source/javascripts/waypoints/sticky.js | 63 + .../source/javascripts/waypoints/waypoint.js | 160 + .../source/layouts/_book-footer.erb | 7 + .../master_middleman/source/layouts/_title.erb | 6 + .../master_middleman/source/pdf_header.html | 7 + .../source/stylesheets/book-styles.css.scss | 3 + .../stylesheets/partials/_book-base-values.scss | 0 .../source/stylesheets/partials/_book-vars.scss | 19 + .../source/subnavs/geode-subnav.erb | 3155 ++++++++++++++++++ geode-book/pdf_header.html | 7 + geode-book/redirects.rb | 5 + 21 files changed, 4306 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/.gitignore ---------------------------------------------------------------------- diff --git a/geode-book/.gitignore b/geode-book/.gitignore new file mode 100644 index 0000000..0cae826 --- /dev/null +++ b/geode-book/.gitignore @@ -0,0 +1,2 @@ +output +final_app http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/Gemfile ---------------------------------------------------------------------- diff --git a/geode-book/Gemfile b/geode-book/Gemfile new file mode 100644 index 0000000..f66d333 --- /dev/null +++ b/geode-book/Gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +gem 'bookbindery' + +gem 'libv8', '3.16.14.7' http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/Gemfile.lock ---------------------------------------------------------------------- diff --git a/geode-book/Gemfile.lock b/geode-book/Gemfile.lock new file mode 100644 index 0000000..3c483c0 --- /dev/null +++ b/geode-book/Gemfile.lock @@ -0,0 +1,203 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.7.1) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.4.0) + ansi (1.5.0) + bookbindery (9.12.0) + ansi (~> 1.4) + css_parser + elasticsearch + fog-aws (~> 0.7.1) + font-awesome-sass + git (~> 1.2.8) + middleman (~> 3.4.0) + middleman-livereload (~> 3.4.3) + middleman-syntax (~> 2.0) + nokogiri (= 1.6.7.2) + puma + rack-rewrite + redcarpet (~> 3.2.3) + rouge (!= 1.9.1) + therubyracer + thor + builder (3.2.2) + capybara (2.4.4) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + chunky_png (1.3.6) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + compass (1.0.3) + chunky_png (~> 1.2) + compass-core (~> 1.0.2) + compass-import-once (~> 1.0.5) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + sass (>= 3.3.13, < 3.5) + compass-core (1.0.3) + multi_json (~> 1.0) + sass (>= 3.3.0, < 3.5) + compass-import-once (1.0.5) + sass (>= 3.2, < 3.5) + css_parser (1.4.5) + addressable + elasticsearch (2.0.0) + elasticsearch-api (= 2.0.0) + elasticsearch-transport (= 2.0.0) + elasticsearch-api (2.0.0) + multi_json + elasticsearch-transport (2.0.0) + faraday + multi_json + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + erubis (2.7.0) + eventmachine (1.2.0.1) + excon (0.51.0) + execjs (2.7.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) + ffi (1.9.14) + fog-aws (0.7.6) + fog-core (~> 1.27) + fog-json (~> 1.0) + fog-xml (~> 0.1) + ipaddress (~> 0.8) + fog-core (1.42.0) + builder + excon (~> 0.49) + formatador (~> 0.2) + fog-json (1.0.2) + fog-core (~> 1.0) + multi_json (~> 1.10) + fog-xml (0.1.2) + fog-core + nokogiri (~> 1.5, >= 1.5.11) + font-awesome-sass (4.6.2) + sass (>= 3.2) + formatador (0.2.5) + git (1.2.9.1) + haml (4.0.7) + tilt + hike (1.2.3) + hooks (0.4.1) + uber (~> 0.0.14) + http_parser.rb (0.6.0) + i18n (0.7.0) + ipaddress (0.8.3) + json (1.8.3) + kramdown (1.12.0) + libv8 (3.16.14.7) + listen (3.0.8) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + middleman (3.4.1) + coffee-script (~> 2.2) + compass (>= 1.0.0, < 2.0.0) + compass-import-once (= 1.0.5) + execjs (~> 2.0) + haml (>= 4.0.5) + kramdown (~> 1.2) + middleman-core (= 3.4.1) + middleman-sprockets (>= 3.1.2) + sass (>= 3.4.0, < 4.0) + uglifier (~> 2.5) + middleman-core (3.4.1) + activesupport (~> 4.1) + bundler (~> 1.1) + capybara (~> 2.4.4) + erubis + hooks (~> 0.3) + i18n (~> 0.7.0) + listen (~> 3.0.3) + padrino-helpers (~> 0.12.3) + rack (>= 1.4.5, < 2.0) + thor (>= 0.15.2, < 2.0) + tilt (~> 1.4.1, < 2.0) + middleman-livereload (3.4.6) + em-websocket (~> 0.5.1) + middleman-core (>= 3.3) + rack-livereload (~> 0.3.15) + middleman-sprockets (3.4.2) + middleman-core (>= 3.3) + sprockets (~> 2.12.1) + sprockets-helpers (~> 1.1.0) + sprockets-sass (~> 1.3.0) + middleman-syntax (2.1.0) + middleman-core (>= 3.2) + rouge (~> 1.0) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_portile2 (2.0.0) + minitest (5.9.0) + multi_json (1.12.1) + multipart-post (2.0.0) + nokogiri (1.6.7.2) + mini_portile2 (~> 2.0.0.rc2) + padrino-helpers (0.12.8) + i18n (~> 0.6, >= 0.6.7) + padrino-support (= 0.12.8) + tilt (~> 1.4.1) + padrino-support (0.12.8) + activesupport (>= 3.1) + puma (3.6.0) + rack (1.6.4) + rack-livereload (0.3.16) + rack + rack-rewrite (1.5.1) + rack-test (0.6.3) + rack (>= 1.0) + rb-fsevent (0.9.7) + rb-inotify (0.9.7) + ffi (>= 0.5.0) + redcarpet (3.2.3) + ref (2.0.0) + rouge (1.11.1) + sass (3.4.22) + sprockets (2.12.4) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sprockets-helpers (1.1.0) + sprockets (~> 2.0) + sprockets-sass (1.3.1) + sprockets (~> 2.0) + tilt (~> 1.1) + therubyracer (0.12.2) + libv8 (~> 3.16.14.0) + ref + thor (0.19.1) + thread_safe (0.3.5) + tilt (1.4.1) + tzinfo (1.2.2) + thread_safe (~> 0.1) + uber (0.0.15) + uglifier (2.7.2) + execjs (>= 0.3.0) + json (>= 1.8.0) + xpath (2.0.0) + nokogiri (~> 1.3) + +PLATFORMS + ruby + +DEPENDENCIES + bookbindery + libv8 (= 3.16.14.7) + +BUNDLED WITH + 1.11.2 http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/config.yml ---------------------------------------------------------------------- diff --git a/geode-book/config.yml b/geode-book/config.yml new file mode 100644 index 0000000..15f7d70 --- /dev/null +++ b/geode-book/config.yml @@ -0,0 +1,23 @@ +book_repo: apache/incubator-geode + +public_host: geode.incubator.apache.org/docs/ + +sections: +- repository: + name: geode-docs + directory: docs + subnav_template: geode-subnav + +template_variables: + support_url: http://geode.incubator.apache.org/community + product_url: http://geode.incubator.apache.org/ + book_title: Apache Geode (Incubating) Documentation + cse_id: 012029519579280034868:3hzywhss5ik + support_link: <a href="http://geode.incubator.apache.org/community" target="_blank">Community</a> + support_call_to_action: <a href="http://geode.incubator.apache.org/community" target="_blank">Need Help?</a> + product_link: <div class="header-item"><a href="http://geode.incubator.apache.org/">Back to Geode Page</a></div> + ga_account_id: UA-39702075-1 + domain_name: apache.org + book_title_short: Geode Docs + +broken_link_exclusions: iefix|using_custom_classes|arrowhead|cppdocs|DotNetDocs http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/images/favicon.ico ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/images/favicon.ico b/geode-book/master_middleman/source/images/favicon.ico new file mode 100644 index 0000000..00aa630 Binary files /dev/null and b/geode-book/master_middleman/source/images/favicon.ico differ http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/index.html.erb ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/index.html.erb b/geode-book/master_middleman/source/index.html.erb new file mode 100644 index 0000000..39ee634 --- /dev/null +++ b/geode-book/master_middleman/source/index.html.erb @@ -0,0 +1,7 @@ +<html> +<head> + +<script type="text/javascript"> + window.location="/docs/about_geode.html"; + </script> +<body></body></html> http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/javascripts/book.js ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/javascripts/book.js b/geode-book/master_middleman/source/javascripts/book.js new file mode 100644 index 0000000..90879c4 --- /dev/null +++ b/geode-book/master_middleman/source/javascripts/book.js @@ -0,0 +1,16 @@ +// Declare your book-specific javascript overrides in this file. +//= require 'waypoints/waypoint' +//= require 'waypoints/context' +//= require 'waypoints/group' +//= require 'waypoints/noframeworkAdapter' +//= require 'waypoints/sticky' + +window.onload = function() { + Bookbinder.boot(); + var sticky = new Waypoint.Sticky({ + element: document.querySelector('#js-to-top'), + wrapper: '<div class="sticky-wrapper" />', + stuckClass: 'sticky', + offset: 100 + }); +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/javascripts/waypoints/context.js ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/javascripts/waypoints/context.js b/geode-book/master_middleman/source/javascripts/waypoints/context.js new file mode 100644 index 0000000..5e3551b --- /dev/null +++ b/geode-book/master_middleman/source/javascripts/waypoints/context.js @@ -0,0 +1,300 @@ +(function() { + 'use strict' + + function requestAnimationFrameShim(callback) { + window.setTimeout(callback, 1000 / 60) + } + + var keyCounter = 0 + var contexts = {} + var Waypoint = window.Waypoint + var oldWindowLoad = window.onload + + /* http://imakewebthings.com/waypoints/api/context */ + function Context(element) { + this.element = element + this.Adapter = Waypoint.Adapter + this.adapter = new this.Adapter(element) + this.key = 'waypoint-context-' + keyCounter + this.didScroll = false + this.didResize = false + this.oldScroll = { + x: this.adapter.scrollLeft(), + y: this.adapter.scrollTop() + } + this.waypoints = { + vertical: {}, + horizontal: {} + } + + element.waypointContextKey = this.key + contexts[element.waypointContextKey] = this + keyCounter += 1 + + this.createThrottledScrollHandler() + this.createThrottledResizeHandler() + } + + /* Private */ + Context.prototype.add = function(waypoint) { + var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical' + this.waypoints[axis][waypoint.key] = waypoint + this.refresh() + } + + /* Private */ + Context.prototype.checkEmpty = function() { + var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal) + var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical) + if (horizontalEmpty && verticalEmpty) { + this.adapter.off('.waypoints') + delete contexts[this.key] + } + } + + /* Private */ + Context.prototype.createThrottledResizeHandler = function() { + var self = this + + function resizeHandler() { + self.handleResize() + self.didResize = false + } + + this.adapter.on('resize.waypoints', function() { + if (!self.didResize) { + self.didResize = true + Waypoint.requestAnimationFrame(resizeHandler) + } + }) + } + + /* Private */ + Context.prototype.createThrottledScrollHandler = function() { + var self = this + function scrollHandler() { + self.handleScroll() + self.didScroll = false + } + + this.adapter.on('scroll.waypoints', function() { + if (!self.didScroll || Waypoint.isTouch) { + self.didScroll = true + Waypoint.requestAnimationFrame(scrollHandler) + } + }) + } + + /* Private */ + Context.prototype.handleResize = function() { + Waypoint.Context.refreshAll() + } + + /* Private */ + Context.prototype.handleScroll = function() { + var triggeredGroups = {} + var axes = { + horizontal: { + newScroll: this.adapter.scrollLeft(), + oldScroll: this.oldScroll.x, + forward: 'right', + backward: 'left' + }, + vertical: { + newScroll: this.adapter.scrollTop(), + oldScroll: this.oldScroll.y, + forward: 'down', + backward: 'up' + } + } + + for (var axisKey in axes) { + var axis = axes[axisKey] + var isForward = axis.newScroll > axis.oldScroll + var direction = isForward ? axis.forward : axis.backward + + for (var waypointKey in this.waypoints[axisKey]) { + var waypoint = this.waypoints[axisKey][waypointKey] + var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint + var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint + var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint + var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint + if (crossedForward || crossedBackward) { + waypoint.queueTrigger(direction) + triggeredGroups[waypoint.group.id] = waypoint.group + } + } + } + + for (var groupKey in triggeredGroups) { + triggeredGroups[groupKey].flushTriggers() + } + + this.oldScroll = { + x: axes.horizontal.newScroll, + y: axes.vertical.newScroll + } + } + + /* Private */ + Context.prototype.innerHeight = function() { + /*eslint-disable eqeqeq */ + if (this.element == this.element.window) { + return Waypoint.viewportHeight() + } + /*eslint-enable eqeqeq */ + return this.adapter.innerHeight() + } + + /* Private */ + Context.prototype.remove = function(waypoint) { + delete this.waypoints[waypoint.axis][waypoint.key] + this.checkEmpty() + } + + /* Private */ + Context.prototype.innerWidth = function() { + /*eslint-disable eqeqeq */ + if (this.element == this.element.window) { + return Waypoint.viewportWidth() + } + /*eslint-enable eqeqeq */ + return this.adapter.innerWidth() + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/context-destroy */ + Context.prototype.destroy = function() { + var allWaypoints = [] + for (var axis in this.waypoints) { + for (var waypointKey in this.waypoints[axis]) { + allWaypoints.push(this.waypoints[axis][waypointKey]) + } + } + for (var i = 0, end = allWaypoints.length; i < end; i++) { + allWaypoints[i].destroy() + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/context-refresh */ + Context.prototype.refresh = function() { + /*eslint-disable eqeqeq */ + var isWindow = this.element == this.element.window + /*eslint-enable eqeqeq */ + var contextOffset = isWindow ? undefined : this.adapter.offset() + var triggeredGroups = {} + var axes + + this.handleScroll() + axes = { + horizontal: { + contextOffset: isWindow ? 0 : contextOffset.left, + contextScroll: isWindow ? 0 : this.oldScroll.x, + contextDimension: this.innerWidth(), + oldScroll: this.oldScroll.x, + forward: 'right', + backward: 'left', + offsetProp: 'left' + }, + vertical: { + contextOffset: isWindow ? 0 : contextOffset.top, + contextScroll: isWindow ? 0 : this.oldScroll.y, + contextDimension: this.innerHeight(), + oldScroll: this.oldScroll.y, + forward: 'down', + backward: 'up', + offsetProp: 'top' + } + } + + for (var axisKey in axes) { + var axis = axes[axisKey] + for (var waypointKey in this.waypoints[axisKey]) { + var waypoint = this.waypoints[axisKey][waypointKey] + var adjustment = waypoint.options.offset + var oldTriggerPoint = waypoint.triggerPoint + var elementOffset = 0 + var freshWaypoint = oldTriggerPoint == null + var contextModifier, wasBeforeScroll, nowAfterScroll + var triggeredBackward, triggeredForward + + if (waypoint.element !== waypoint.element.window) { + elementOffset = waypoint.adapter.offset()[axis.offsetProp] + } + + if (typeof adjustment === 'function') { + adjustment = adjustment.apply(waypoint) + } + else if (typeof adjustment === 'string') { + adjustment = parseFloat(adjustment) + if (waypoint.options.offset.indexOf('%') > - 1) { + adjustment = Math.ceil(axis.contextDimension * adjustment / 100) + } + } + + contextModifier = axis.contextScroll - axis.contextOffset + waypoint.triggerPoint = elementOffset + contextModifier - adjustment + wasBeforeScroll = oldTriggerPoint < axis.oldScroll + nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll + triggeredBackward = wasBeforeScroll && nowAfterScroll + triggeredForward = !wasBeforeScroll && !nowAfterScroll + + if (!freshWaypoint && triggeredBackward) { + waypoint.queueTrigger(axis.backward) + triggeredGroups[waypoint.group.id] = waypoint.group + } + else if (!freshWaypoint && triggeredForward) { + waypoint.queueTrigger(axis.forward) + triggeredGroups[waypoint.group.id] = waypoint.group + } + else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) { + waypoint.queueTrigger(axis.forward) + triggeredGroups[waypoint.group.id] = waypoint.group + } + } + } + + Waypoint.requestAnimationFrame(function() { + for (var groupKey in triggeredGroups) { + triggeredGroups[groupKey].flushTriggers() + } + }) + + return this + } + + /* Private */ + Context.findOrCreateByElement = function(element) { + return Context.findByElement(element) || new Context(element) + } + + /* Private */ + Context.refreshAll = function() { + for (var contextId in contexts) { + contexts[contextId].refresh() + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/context-find-by-element */ + Context.findByElement = function(element) { + return contexts[element.waypointContextKey] + } + + window.onload = function() { + if (oldWindowLoad) { + oldWindowLoad() + } + Context.refreshAll() + } + + Waypoint.requestAnimationFrame = function(callback) { + var requestFn = window.requestAnimationFrame || + window.mozRequestAnimationFrame || + window.webkitRequestAnimationFrame || + requestAnimationFrameShim + requestFn.call(window, callback) + } + Waypoint.Context = Context +}()) http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/javascripts/waypoints/group.js ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/javascripts/waypoints/group.js b/geode-book/master_middleman/source/javascripts/waypoints/group.js new file mode 100644 index 0000000..57c3038 --- /dev/null +++ b/geode-book/master_middleman/source/javascripts/waypoints/group.js @@ -0,0 +1,105 @@ +(function() { + 'use strict' + + function byTriggerPoint(a, b) { + return a.triggerPoint - b.triggerPoint + } + + function byReverseTriggerPoint(a, b) { + return b.triggerPoint - a.triggerPoint + } + + var groups = { + vertical: {}, + horizontal: {} + } + var Waypoint = window.Waypoint + + /* http://imakewebthings.com/waypoints/api/group */ + function Group(options) { + this.name = options.name + this.axis = options.axis + this.id = this.name + '-' + this.axis + this.waypoints = [] + this.clearTriggerQueues() + groups[this.axis][this.name] = this + } + + /* Private */ + Group.prototype.add = function(waypoint) { + this.waypoints.push(waypoint) + } + + /* Private */ + Group.prototype.clearTriggerQueues = function() { + this.triggerQueues = { + up: [], + down: [], + left: [], + right: [] + } + } + + /* Private */ + Group.prototype.flushTriggers = function() { + for (var direction in this.triggerQueues) { + var waypoints = this.triggerQueues[direction] + var reverse = direction === 'up' || direction === 'left' + waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint) + for (var i = 0, end = waypoints.length; i < end; i += 1) { + var waypoint = waypoints[i] + if (waypoint.options.continuous || i === waypoints.length - 1) { + waypoint.trigger([direction]) + } + } + } + this.clearTriggerQueues() + } + + /* Private */ + Group.prototype.next = function(waypoint) { + this.waypoints.sort(byTriggerPoint) + var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) + var isLast = index === this.waypoints.length - 1 + return isLast ? null : this.waypoints[index + 1] + } + + /* Private */ + Group.prototype.previous = function(waypoint) { + this.waypoints.sort(byTriggerPoint) + var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) + return index ? this.waypoints[index - 1] : null + } + + /* Private */ + Group.prototype.queueTrigger = function(waypoint, direction) { + this.triggerQueues[direction].push(waypoint) + } + + /* Private */ + Group.prototype.remove = function(waypoint) { + var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) + if (index > -1) { + this.waypoints.splice(index, 1) + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/first */ + Group.prototype.first = function() { + return this.waypoints[0] + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/last */ + Group.prototype.last = function() { + return this.waypoints[this.waypoints.length - 1] + } + + /* Private */ + Group.findOrCreate = function(options) { + return groups[options.axis][options.name] || new Group(options) + } + + Waypoint.Group = Group +}()) http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js b/geode-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js new file mode 100644 index 0000000..99abcb5 --- /dev/null +++ b/geode-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js @@ -0,0 +1,213 @@ +(function() { + 'use strict' + + var Waypoint = window.Waypoint + + function isWindow(element) { + return element === element.window + } + + function getWindow(element) { + if (isWindow(element)) { + return element + } + return element.defaultView + } + + function classNameRegExp(className) { + return new RegExp("\\b" + className + "\\b"); + } + + function NoFrameworkAdapter(element) { + this.element = element + this.handlers = {} + } + + NoFrameworkAdapter.prototype.innerHeight = function() { + var isWin = isWindow(this.element) + return isWin ? this.element.innerHeight : this.element.clientHeight + } + + NoFrameworkAdapter.prototype.innerWidth = function() { + var isWin = isWindow(this.element) + return isWin ? this.element.innerWidth : this.element.clientWidth + } + + NoFrameworkAdapter.prototype.off = function(event, handler) { + function removeListeners(element, listeners, handler) { + for (var i = 0, end = listeners.length - 1; i < end; i++) { + var listener = listeners[i] + if (!handler || handler === listener) { + element.removeEventListener(listener) + } + } + } + + var eventParts = event.split('.') + var eventType = eventParts[0] + var namespace = eventParts[1] + var element = this.element + + if (namespace && this.handlers[namespace] && eventType) { + removeListeners(element, this.handlers[namespace][eventType], handler) + this.handlers[namespace][eventType] = [] + } + else if (eventType) { + for (var ns in this.handlers) { + removeListeners(element, this.handlers[ns][eventType] || [], handler) + this.handlers[ns][eventType] = [] + } + } + else if (namespace && this.handlers[namespace]) { + for (var type in this.handlers[namespace]) { + removeListeners(element, this.handlers[namespace][type], handler) + } + this.handlers[namespace] = {} + } + } + + /* Adapted from jQuery 1.x offset() */ + NoFrameworkAdapter.prototype.offset = function() { + if (!this.element.ownerDocument) { + return null + } + + var documentElement = this.element.ownerDocument.documentElement + var win = getWindow(this.element.ownerDocument) + var rect = { + top: 0, + left: 0 + } + + if (this.element.getBoundingClientRect) { + rect = this.element.getBoundingClientRect() + } + + return { + top: rect.top + win.pageYOffset - documentElement.clientTop, + left: rect.left + win.pageXOffset - documentElement.clientLeft + } + } + + NoFrameworkAdapter.prototype.on = function(event, handler) { + var eventParts = event.split('.') + var eventType = eventParts[0] + var namespace = eventParts[1] || '__default' + var nsHandlers = this.handlers[namespace] = this.handlers[namespace] || {} + var nsTypeList = nsHandlers[eventType] = nsHandlers[eventType] || [] + + nsTypeList.push(handler) + this.element.addEventListener(eventType, handler) + } + + NoFrameworkAdapter.prototype.outerHeight = function(includeMargin) { + var height = this.innerHeight() + var computedStyle + + if (includeMargin && !isWindow(this.element)) { + computedStyle = window.getComputedStyle(this.element) + height += parseInt(computedStyle.marginTop, 10) + height += parseInt(computedStyle.marginBottom, 10) + } + + return height + } + + NoFrameworkAdapter.prototype.outerWidth = function(includeMargin) { + var width = this.innerWidth() + var computedStyle + + if (includeMargin && !isWindow(this.element)) { + computedStyle = window.getComputedStyle(this.element) + width += parseInt(computedStyle.marginLeft, 10) + width += parseInt(computedStyle.marginRight, 10) + } + + return width + } + + NoFrameworkAdapter.prototype.scrollLeft = function() { + var win = getWindow(this.element) + return win ? win.pageXOffset : this.element.scrollLeft + } + + NoFrameworkAdapter.prototype.scrollTop = function() { + var win = getWindow(this.element) + return win ? win.pageYOffset : this.element.scrollTop + } + + NoFrameworkAdapter.prototype.height = function(newHeight) { + this.element.style.height = newHeight; + } + + NoFrameworkAdapter.prototype.removeClass = function(className) { + this.element.className = this.element.className.replace(classNameRegExp(className), ''); + } + + NoFrameworkAdapter.prototype.toggleClass = function(className, addClass) { + var check = classNameRegExp(className); + if (check.test(this.element.className)) { + if (!addClass) { + this.removeClass(className); + } + } else { + this.element.className += ' ' + className; + } + } + + NoFrameworkAdapter.prototype.parent = function() { + return new NoFrameworkAdapter(this.element.parentNode); + } + + NoFrameworkAdapter.prototype.wrap = function(wrapper) { + this.element.insertAdjacentHTML('beforebegin', wrapper) + var wrapperNode = this.element.previousSibling + this.element.parentNode.removeChild(this.element) + wrapperNode.appendChild(this.element) + } + + NoFrameworkAdapter.extend = function() { + var args = Array.prototype.slice.call(arguments) + + function merge(target, obj) { + if (typeof target === 'object' && typeof obj === 'object') { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + target[key] = obj[key] + } + } + } + + return target + } + + for (var i = 1, end = args.length; i < end; i++) { + merge(args[0], args[i]) + } + return args[0] + } + + NoFrameworkAdapter.inArray = function(element, array, i) { + return array == null ? -1 : array.indexOf(element, i) + } + + NoFrameworkAdapter.isEmptyObject = function(obj) { + /* eslint no-unused-vars: 0 */ + for (var name in obj) { + return false + } + return true + } + + NoFrameworkAdapter.proxy = function(func, obj) { + return function() { + return func.apply(obj, arguments); + } + } + + Waypoint.adapters.push({ + name: 'noframework', + Adapter: NoFrameworkAdapter + }) + Waypoint.Adapter = NoFrameworkAdapter +}()) http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/javascripts/waypoints/sticky.js ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/javascripts/waypoints/sticky.js b/geode-book/master_middleman/source/javascripts/waypoints/sticky.js new file mode 100644 index 0000000..569fcdb --- /dev/null +++ b/geode-book/master_middleman/source/javascripts/waypoints/sticky.js @@ -0,0 +1,63 @@ +(function() { + 'use strict' + + var Waypoint = window.Waypoint; + var adapter = Waypoint.Adapter; + + /* http://imakewebthings.com/waypoints/shortcuts/sticky-elements */ + function Sticky(options) { + this.options = adapter.extend({}, Waypoint.defaults, Sticky.defaults, options) + this.element = this.options.element + this.$element = new adapter(this.element) + this.createWrapper() + this.createWaypoint() + } + + /* Private */ + Sticky.prototype.createWaypoint = function() { + var originalHandler = this.options.handler + + this.waypoint = new Waypoint(adapter.extend({}, this.options, { + element: this.wrapper, + handler: adapter.proxy(function(direction) { + var shouldBeStuck = this.options.direction.indexOf(direction) > -1 + var wrapperHeight = shouldBeStuck ? this.$element.outerHeight(true) : '' + + this.$wrapper.height(wrapperHeight) + this.$element.toggleClass(this.options.stuckClass, shouldBeStuck) + + if (originalHandler) { + originalHandler.call(this, direction) + } + }, this) + })) + } + + /* Private */ + Sticky.prototype.createWrapper = function() { + if (this.options.wrapper) { + this.$element.wrap(this.options.wrapper) + } + this.$wrapper = this.$element.parent() + this.wrapper = this.$wrapper.element + } + + /* Public */ + Sticky.prototype.destroy = function() { + if (this.$element.parent().element === this.wrapper) { + this.waypoint.destroy() + this.$element.removeClass(this.options.stuckClass) + if (this.options.wrapper) { + this.$element.unwrap() + } + } + } + + Sticky.defaults = { + wrapper: '<div class="sticky-wrapper" />', + stuckClass: 'stuck', + direction: 'down right' + } + + Waypoint.Sticky = Sticky +}()) http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/javascripts/waypoints/waypoint.js ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/javascripts/waypoints/waypoint.js b/geode-book/master_middleman/source/javascripts/waypoints/waypoint.js new file mode 100644 index 0000000..7f76f1d --- /dev/null +++ b/geode-book/master_middleman/source/javascripts/waypoints/waypoint.js @@ -0,0 +1,160 @@ +(function() { + 'use strict' + + var keyCounter = 0 + var allWaypoints = {} + + /* http://imakewebthings.com/waypoints/api/waypoint */ + function Waypoint(options) { + if (!options) { + throw new Error('No options passed to Waypoint constructor') + } + if (!options.element) { + throw new Error('No element option passed to Waypoint constructor') + } + if (!options.handler) { + throw new Error('No handler option passed to Waypoint constructor') + } + + this.key = 'waypoint-' + keyCounter + this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options) + this.element = this.options.element + this.adapter = new Waypoint.Adapter(this.element) + this.callback = options.handler + this.axis = this.options.horizontal ? 'horizontal' : 'vertical' + this.enabled = this.options.enabled + this.triggerPoint = null + this.group = Waypoint.Group.findOrCreate({ + name: this.options.group, + axis: this.axis + }) + this.context = Waypoint.Context.findOrCreateByElement(this.options.context) + + if (Waypoint.offsetAliases[this.options.offset]) { + this.options.offset = Waypoint.offsetAliases[this.options.offset] + } + this.group.add(this) + this.context.add(this) + allWaypoints[this.key] = this + keyCounter += 1 + } + + /* Private */ + Waypoint.prototype.queueTrigger = function(direction) { + this.group.queueTrigger(this, direction) + } + + /* Private */ + Waypoint.prototype.trigger = function(args) { + if (!this.enabled) { + return + } + if (this.callback) { + this.callback.apply(this, args) + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/destroy */ + Waypoint.prototype.destroy = function() { + this.context.remove(this) + this.group.remove(this) + delete allWaypoints[this.key] + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/disable */ + Waypoint.prototype.disable = function() { + this.enabled = false + return this + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/enable */ + Waypoint.prototype.enable = function() { + this.context.refresh() + this.enabled = true + return this + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/next */ + Waypoint.prototype.next = function() { + return this.group.next(this) + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/previous */ + Waypoint.prototype.previous = function() { + return this.group.previous(this) + } + + /* Private */ + Waypoint.invokeAll = function(method) { + var allWaypointsArray = [] + for (var waypointKey in allWaypoints) { + allWaypointsArray.push(allWaypoints[waypointKey]) + } + for (var i = 0, end = allWaypointsArray.length; i < end; i++) { + allWaypointsArray[i][method]() + } + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/destroy-all */ + Waypoint.destroyAll = function() { + Waypoint.invokeAll('destroy') + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/disable-all */ + Waypoint.disableAll = function() { + Waypoint.invokeAll('disable') + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/enable-all */ + Waypoint.enableAll = function() { + Waypoint.invokeAll('enable') + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/refresh-all */ + Waypoint.refreshAll = function() { + Waypoint.Context.refreshAll() + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/viewport-height */ + Waypoint.viewportHeight = function() { + return window.innerHeight || document.documentElement.clientHeight + } + + /* Public */ + /* http://imakewebthings.com/waypoints/api/viewport-width */ + Waypoint.viewportWidth = function() { + return document.documentElement.clientWidth + } + + Waypoint.adapters = [] + + Waypoint.defaults = { + context: window, + continuous: true, + enabled: true, + group: 'default', + horizontal: false, + offset: 0 + } + + Waypoint.offsetAliases = { + 'bottom-in-view': function() { + return this.context.innerHeight() - this.adapter.outerHeight() + }, + 'right-in-view': function() { + return this.context.innerWidth() - this.adapter.outerWidth() + } + } + + window.Waypoint = Waypoint +}()) http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/layouts/_book-footer.erb ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/layouts/_book-footer.erb b/geode-book/master_middleman/source/layouts/_book-footer.erb new file mode 100644 index 0000000..55bf514 --- /dev/null +++ b/geode-book/master_middleman/source/layouts/_book-footer.erb @@ -0,0 +1,7 @@ +<div class="copyright"> + <a href='/'>Apache Geode Documentation</a> + © <%= Time.now.year %> <a href='http://www.apache.org/'>The Apache Software Foundation</a>. +</div> +<div class="support"> + Need help? <a href="<%=vars.support_url%>" target="_blank">Visit the Community</a> +</div> http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/layouts/_title.erb ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/layouts/_title.erb b/geode-book/master_middleman/source/layouts/_title.erb new file mode 100644 index 0000000..ea744d9 --- /dev/null +++ b/geode-book/master_middleman/source/layouts/_title.erb @@ -0,0 +1,6 @@ +<% if current_page.data.title %> + <h1 class="title-container" <%= current_page.data.dita ? 'style="display: none;"' : '' %>> + <%= current_page.data.title %> + </h1> +<% end %> + http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/pdf_header.html ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/pdf_header.html b/geode-book/master_middleman/source/pdf_header.html new file mode 100644 index 0000000..a1925fd --- /dev/null +++ b/geode-book/master_middleman/source/pdf_header.html @@ -0,0 +1,7 @@ +<!DOCTYPE html> +<html> + <body> + <div class='pdf_header' style="background-color:#00786e; padding:12px 0px 12px 10px"> + </div> + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/stylesheets/book-styles.css.scss ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/stylesheets/book-styles.css.scss b/geode-book/master_middleman/source/stylesheets/book-styles.css.scss new file mode 100644 index 0000000..1236d8e --- /dev/null +++ b/geode-book/master_middleman/source/stylesheets/book-styles.css.scss @@ -0,0 +1,3 @@ +* { + box-sizing: border-box; +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/stylesheets/partials/_book-base-values.scss ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/stylesheets/partials/_book-base-values.scss b/geode-book/master_middleman/source/stylesheets/partials/_book-base-values.scss new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d9d8b59b/geode-book/master_middleman/source/stylesheets/partials/_book-vars.scss ---------------------------------------------------------------------- diff --git a/geode-book/master_middleman/source/stylesheets/partials/_book-vars.scss b/geode-book/master_middleman/source/stylesheets/partials/_book-vars.scss new file mode 100644 index 0000000..4245d57 --- /dev/null +++ b/geode-book/master_middleman/source/stylesheets/partials/_book-vars.scss @@ -0,0 +1,19 @@ +$navy: #243640; +$blue1: #2185c5; +$blue2: #a7cae1; +$bluegray1: #4b6475; +$teal1: #03786D; +$teal2: #00a79d; + +$color-accent: $teal1; +$color-accent-bright: $teal2; + +// link colors +$color-link: $blue1; +$color-link-border: $blue2; + +$color-border-tip: $blue2; + +$color-bg-header: $navy; +$color-bg-dark: $bluegray1; +