From be0ef196de78ee395dcd0c9fb48793397b73f976 Mon Sep 17 00:00:00 2001 From: DanaKirsh Date: Tue, 30 Mar 2021 03:17:36 +0100 Subject: [PATCH 1/3] Create Ember Data landing page (#638) --- app/routes/project-version.js | 7 ++-- app/templates/ember-data.hbs | 56 ++++++++++++++++++++++++++++++ tests/acceptance/redirects-test.js | 10 ------ 3 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 app/templates/ember-data.hbs diff --git a/app/routes/project-version.js b/app/routes/project-version.js index c9fddd8df..5fbb42e79 100644 --- a/app/routes/project-version.js +++ b/app/routes/project-version.js @@ -50,10 +50,11 @@ export default Route.extend({ // if there is no class, module, or namespace specified... let latestVersion = getLastVersion(model.get('project.content').hasMany('projectVersions').ids()); let isLatestVersion = transitionVersion === latestVersion || transitionVersion === 'release'; + let isEmberProject = model.get('project.id') === 'ember'; let shouldConvertPackages = semverCompare(model.get('version'), '2.16') < 0; - if (!shouldConvertPackages || isLatestVersion) { - // ... and the transition version is the latest release, - // display the landing page at + if ((!shouldConvertPackages || isLatestVersion) && isEmberProject) { + // ... and the transition version is the latest release, and the selected docs are + // ember (not Ember Data), then display the landing page at return this.transitionTo('project-version.index'); } else { // else go to the version specified diff --git a/app/templates/ember-data.hbs b/app/templates/ember-data.hbs new file mode 100644 index 000000000..597b99407 --- /dev/null +++ b/app/templates/ember-data.hbs @@ -0,0 +1,56 @@ +
+

+ Ember Data API Documentation +

+

+ Ember Data is a library for robustly managing data in applications built with Ember.js. +

+

+ Commonly searched-for documentation +

+ +

+ Useful links +

+ +
\ No newline at end of file diff --git a/tests/acceptance/redirects-test.js b/tests/acceptance/redirects-test.js index e71e5bf24..a6d8157d2 100644 --- a/tests/acceptance/redirects-test.js +++ b/tests/acceptance/redirects-test.js @@ -15,16 +15,6 @@ module('Acceptance | redirects', function(hooks) { assert.dom('h1').hasText('Ember API Documentation'); }); - test('visiting /ember-data', async function (assert) { - await visit('/ember-data'); - assert.equal( - currentURL(), - `/ember-data/release`, - 'routes to the landing page' - ); - assert.dom('h1').hasText('Ember API Documentation'); - }); - test('visiting pre-2.16 version', async function(assert) { await visit('/ember/1.0'); From 732849c6ceb6f0ca5fe7d1c1183618815eae9455 Mon Sep 17 00:00:00 2001 From: Jen Weber Date: Fri, 21 May 2021 18:41:07 -0400 Subject: [PATCH 2/3] Show the Ember Data landing page --- .../ember-data-landing-page.hbs} | 2 +- app/components/ember-landing-page.hbs | 39 ++++++++++++++++ app/routes/project-version.js | 7 ++- app/routes/project-version/index.js | 5 +++ app/templates/project-version/index.hbs | 44 +++---------------- 5 files changed, 53 insertions(+), 44 deletions(-) rename app/{templates/ember-data.hbs => components/ember-data-landing-page.hbs} (98%) create mode 100644 app/components/ember-landing-page.hbs diff --git a/app/templates/ember-data.hbs b/app/components/ember-data-landing-page.hbs similarity index 98% rename from app/templates/ember-data.hbs rename to app/components/ember-data-landing-page.hbs index 597b99407..0b5eb0a37 100644 --- a/app/templates/ember-data.hbs +++ b/app/components/ember-data-landing-page.hbs @@ -1,4 +1,4 @@ -
+<

Ember Data API Documentation

diff --git a/app/components/ember-landing-page.hbs b/app/components/ember-landing-page.hbs new file mode 100644 index 000000000..72572f558 --- /dev/null +++ b/app/components/ember-landing-page.hbs @@ -0,0 +1,39 @@ +
+

Ember API Documentation

+

+ To get started, choose a project (Ember or Ember Data) and a version + from the dropdown menu. Ember has core methods used in any app, while Ember Data has + documentation of the built-in library for making requests to a back end. + If you're looking for documentation of the command line tool used to generate files, build your + app, and more, visit ember-cli. The latest + testing API is available at + ember-test-helpers. +

+

Commonly searched-for documentation

+
    +
  • Components - {{#link-to 'project-version.classes.class' 'Component'}}Classic{{/link-to}} or {{#link-to 'project-version.modules.module' '@glimmer/component'}}Glimmer{{/link-to}}; a view that is completely isolated
  • +
  • {{#link-to 'project-version.functions.function' '@glimmer/tracking' 'tracked'}}Tracked{{/link-to}} - make your templates responsive to property updates
  • +
  • {{#link-to 'project-version.classes.class' 'ComputedProperty'}}Computed Properties{{/link-to}} - declare functions as properties
  • +
  • {{#link-to 'project-version.classes.class' '@ember/object/computed'}}Computed Macros{{/link-to}} - shorter ways of expressing certain types of computed properties
  • +
  • {{#link-to 'project-version.classes.class' 'EmberArray'}}EmberArray{{/link-to}} - contains methods like {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'forEach' (query-params anchor='forEach')}}forEach{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'mapBy' (query-params anchor='mapBy')}}mapBy{{/link-to}} that help you iterate over Ember Objects
  • +
  • {{#link-to 'project-version.classes.class' 'EmberObject'}}EmberObject{{/link-to}} - the main base class for all Ember objects, including the {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'get' (query-params anchor='get')}}get{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'set' (query-params anchor='set')}}set{{/link-to}} methods
  • +
  • {{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}} helper
  • +
  • {{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}}, {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'on' (query-params anchor='on')}}on{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'fn' (query-params anchor='fn')}}fn{{/link-to}} helpers
  • +
  • {{#link-to 'project-version.classes.class' 'Helper'}}Helpers{{/link-to}} - a way to define custom display functions that are used in templates
  • +
  • {{#link-to 'project-version.classes.class' 'Route'}}Route{{/link-to}} - used to define individual routes, including the {{#link-to 'project-version.classes.class.methods.method' 'Route' 'model' (query-params anchor='model')}}model{{/link-to}} hook for loading data
  • +
  • {{#link-to 'project-version.classes.class' 'Service'}}Service{{/link-to}} - an Ember object that lives for the duration of the application, and can be made available in different parts of your application
  • +
+

Useful links

+ +
diff --git a/app/routes/project-version.js b/app/routes/project-version.js index 5fbb42e79..c9fddd8df 100644 --- a/app/routes/project-version.js +++ b/app/routes/project-version.js @@ -50,11 +50,10 @@ export default Route.extend({ // if there is no class, module, or namespace specified... let latestVersion = getLastVersion(model.get('project.content').hasMany('projectVersions').ids()); let isLatestVersion = transitionVersion === latestVersion || transitionVersion === 'release'; - let isEmberProject = model.get('project.id') === 'ember'; let shouldConvertPackages = semverCompare(model.get('version'), '2.16') < 0; - if ((!shouldConvertPackages || isLatestVersion) && isEmberProject) { - // ... and the transition version is the latest release, and the selected docs are - // ember (not Ember Data), then display the landing page at + if (!shouldConvertPackages || isLatestVersion) { + // ... and the transition version is the latest release, + // display the landing page at return this.transitionTo('project-version.index'); } else { // else go to the version specified diff --git a/app/routes/project-version/index.js b/app/routes/project-version/index.js index 6c74252aa..fea982b9e 100644 --- a/app/routes/project-version/index.js +++ b/app/routes/project-version/index.js @@ -1,4 +1,9 @@ import Route from '@ember/routing/route'; export default Route.extend({ + async model() { + const projectVersion = this.modelFor('project-version'); + const project = await projectVersion.project; + return project; + } }); diff --git a/app/templates/project-version/index.hbs b/app/templates/project-version/index.hbs index 72572f558..af49c7180 100644 --- a/app/templates/project-version/index.hbs +++ b/app/templates/project-version/index.hbs @@ -1,39 +1,5 @@ -
-

Ember API Documentation

-

- To get started, choose a project (Ember or Ember Data) and a version - from the dropdown menu. Ember has core methods used in any app, while Ember Data has - documentation of the built-in library for making requests to a back end. - If you're looking for documentation of the command line tool used to generate files, build your - app, and more, visit ember-cli. The latest - testing API is available at - ember-test-helpers. -

-

Commonly searched-for documentation

-
    -
  • Components - {{#link-to 'project-version.classes.class' 'Component'}}Classic{{/link-to}} or {{#link-to 'project-version.modules.module' '@glimmer/component'}}Glimmer{{/link-to}}; a view that is completely isolated
  • -
  • {{#link-to 'project-version.functions.function' '@glimmer/tracking' 'tracked'}}Tracked{{/link-to}} - make your templates responsive to property updates
  • -
  • {{#link-to 'project-version.classes.class' 'ComputedProperty'}}Computed Properties{{/link-to}} - declare functions as properties
  • -
  • {{#link-to 'project-version.classes.class' '@ember/object/computed'}}Computed Macros{{/link-to}} - shorter ways of expressing certain types of computed properties
  • -
  • {{#link-to 'project-version.classes.class' 'EmberArray'}}EmberArray{{/link-to}} - contains methods like {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'forEach' (query-params anchor='forEach')}}forEach{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'mapBy' (query-params anchor='mapBy')}}mapBy{{/link-to}} that help you iterate over Ember Objects
  • -
  • {{#link-to 'project-version.classes.class' 'EmberObject'}}EmberObject{{/link-to}} - the main base class for all Ember objects, including the {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'get' (query-params anchor='get')}}get{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'set' (query-params anchor='set')}}set{{/link-to}} methods
  • -
  • {{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}} helper
  • -
  • {{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}}, {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'on' (query-params anchor='on')}}on{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'fn' (query-params anchor='fn')}}fn{{/link-to}} helpers
  • -
  • {{#link-to 'project-version.classes.class' 'Helper'}}Helpers{{/link-to}} - a way to define custom display functions that are used in templates
  • -
  • {{#link-to 'project-version.classes.class' 'Route'}}Route{{/link-to}} - used to define individual routes, including the {{#link-to 'project-version.classes.class.methods.method' 'Route' 'model' (query-params anchor='model')}}model{{/link-to}} hook for loading data
  • -
  • {{#link-to 'project-version.classes.class' 'Service'}}Service{{/link-to}} - an Ember object that lives for the duration of the application, and can be made available in different parts of your application
  • -
-

Useful links

- -
+{{#if (eq @model.id "ember-data")}} + +{{else}} + +{{/if}} From 8e7f1ed5e23af8aa2a0f94d9b169a2aa1cd12b20 Mon Sep 17 00:00:00 2001 From: Chris Thoburn Date: Fri, 21 May 2021 17:01:25 -0700 Subject: [PATCH 3/3] ember-data landing page: use ember-data-overview module main if present --- app/controllers/project-version.js | 3 ++- app/routes/project-version.js | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/controllers/project-version.js b/app/controllers/project-version.js index 8a11065b1..00ce8926a 100644 --- a/app/controllers/project-version.js +++ b/app/controllers/project-version.js @@ -44,7 +44,8 @@ export default Controller.extend({ getModuleRelationships(versionId, moduleType) { let relations = this.getRelations(moduleType); - return relations.map(id => id.substring(versionId.length + 1)) + // filter overviews out. If other projects add their overview we should filter those too. + return relations.map(id => id.substring(versionId.length + 1)).filter(id => id !== 'ember-data-overview'); }, getRelations(relationship) { diff --git a/app/routes/project-version.js b/app/routes/project-version.js index c9fddd8df..a5fbc7b7f 100644 --- a/app/routes/project-version.js +++ b/app/routes/project-version.js @@ -54,6 +54,15 @@ export default Route.extend({ if (!shouldConvertPackages || isLatestVersion) { // ... and the transition version is the latest release, // display the landing page at + + // ember-data if @main declaration exists for ember-data-overview + let versionId = model.get('id'); + let modules = model.hasMany('modules').ids().map(id => id.substring(versionId.length + 1)); + if (model.get('project.id') === 'ember-data' && modules.indexOf('ember-data-overview') !== -1) { + return this.transitionTo('project-version.modules.module', model.get('project.id'), transitionVersion, 'ember-data-overview'); + } + + // ember / ember-cli / ember-data if no @main declaration exists for ember-data-overview return this.transitionTo('project-version.index'); } else { // else go to the version specified