Skip to content

Commit 39d157b

Browse files
committed
wip remove route-action-helper
1 parent b254e61 commit 39d157b

File tree

5 files changed

+121
-122
lines changed

5 files changed

+121
-122
lines changed

app/controllers/project-version.js

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import values from 'lodash.values';
88
import groupBy from 'lodash.groupby';
99
import semverCompare from 'semver-compare';
1010
import getCompactVersion from '../utils/get-compact-version';
11+
import { inject as controller } from '@ember/controller'
1112

1213
export default class ProjectVersionController extends Controller {
1314
@service
@@ -19,6 +20,15 @@ export default class ProjectVersionController extends Controller {
1920
@service
2021
project;
2122

23+
@service
24+
router;
25+
26+
@service('project')
27+
projectService;
28+
29+
@controller('project-version.classes.class')
30+
classesController;
31+
2232
@alias('filterData.sideNav.showPrivate')
2333
showPrivateClasses;
2434

@@ -128,4 +138,114 @@ export default class ProjectVersionController extends Controller {
128138
togglePrivateClasses() {
129139
set(this, 'showPrivateClasses', !this.showPrivateClasses);
130140
}
141+
142+
@action
143+
updateProject(ver /*, component */) {
144+
let project = this.activeProject;
145+
let projectVersionID = ver.compactVersion;
146+
let endingRoute;
147+
switch (this.router.currentRouteName) {
148+
case 'project-version.classes.class': {
149+
let className = this._getEncodedNameForCurrentClass();
150+
endingRoute = `classes/${className}`;
151+
break;
152+
}
153+
case 'project-version.classes.class.index': {
154+
let className = this._getEncodedNameForCurrentClass();
155+
endingRoute = `classes/${className}`;
156+
break;
157+
}
158+
case 'project-version.modules.module.index': {
159+
let moduleName = encodeURIComponent(
160+
this.paramsFor('project-version.modules.module').module
161+
);
162+
endingRoute = `modules/${moduleName}`;
163+
break;
164+
}
165+
case 'project-version.namespaces.namespace.index': {
166+
let namespaceName = this.paramsFor(
167+
'project-version.namespaces.namespace'
168+
).namespace;
169+
endingRoute = `namespaces/${namespaceName}`;
170+
break;
171+
}
172+
case 'project-version.classes.class.methods.index': {
173+
let className = this._getEncodedNameForCurrentClass();
174+
endingRoute = `classes/${className}/methods`;
175+
break;
176+
}
177+
case 'project-version.classes.class.events.index': {
178+
let className = this._getEncodedNameForCurrentClass();
179+
endingRoute = `classes/${className}/events`;
180+
break;
181+
}
182+
case 'project-version.classes.class.properties.index': {
183+
let className = this._getEncodedNameForCurrentClass();
184+
endingRoute = `classes/${className}/properties`;
185+
break;
186+
}
187+
case 'project-version.classes.class.methods.method': {
188+
let className = this._getEncodedNameForCurrentClass();
189+
let methodName = this.paramsFor(
190+
'project-version.classes.class.methods.method'
191+
).method;
192+
endingRoute = `classes/${className}/methods/${methodName}?anchor=${methodName}`;
193+
break;
194+
}
195+
case 'project-version.classes.class.events.event': {
196+
let className = this._getEncodedNameForCurrentClass();
197+
let eventName = this.paramsFor(
198+
'project-version.classes.class.events.event'
199+
).event;
200+
endingRoute = `classes/${className}/events/${eventName}?anchor=${eventName}`;
201+
break;
202+
}
203+
case 'project-version.classes.class.properties.property': {
204+
let className = this._getEncodedNameForCurrentClass();
205+
let propertyName = this.paramsFor(
206+
'project-version.classes.class.properties.property'
207+
).property;
208+
endingRoute = `classes/${className}/properties/${propertyName}?anchor=${propertyName}`;
209+
break;
210+
}
211+
default:
212+
endingRoute = '';
213+
break;
214+
}
215+
// if the user is navigating to/from api versions >= 2.16, take them
216+
// to the home page instead of trying to translate the url
217+
let shouldConvertPackages = this.shouldConvertPackages(
218+
ver,
219+
this.projectService.version
220+
);
221+
let isEmberProject = project === 'ember';
222+
if (!isEmberProject || !shouldConvertPackages) {
223+
this.router.transitionTo(
224+
`/${project}/${projectVersionID}/${endingRoute}`
225+
);
226+
} else {
227+
this.router.transitionTo(`/${project}/${projectVersionID}`);
228+
}
229+
}
230+
231+
// Input some version info, returns a boolean based on
232+
// whether the user is switching versions for a 2.16 docs release or later.
233+
// The urls for pre-2.16 classes and later packages are quite different
234+
shouldConvertPackages(targetVer, previousVer) {
235+
let targetVersion = getCompactVersion(targetVer.id);
236+
let previousVersion = getCompactVersion(previousVer);
237+
let previousComparison = semverCompare(previousVersion, '2.16');
238+
let targetComparison = semverCompare(targetVersion, '2.16');
239+
return (
240+
(previousComparison < 0 && targetComparison >= 0) ||
241+
(previousComparison >= 0 && targetComparison < 0)
242+
);
243+
}
244+
245+
_getEncodedNameForCurrentClass() {
246+
// escape any reserved characters for url, like slashes
247+
return encodeURIComponent(
248+
this.classesController.model.get('name')
249+
);
250+
}
131251
}

app/routes/project-version.js

Lines changed: 0 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -144,94 +144,6 @@ export default class ProjectVersionRoute extends Route {
144144
};
145145
}
146146

147-
@action
148-
updateProject(project, ver /*, component */) {
149-
let projectVersionID = ver.compactVersion;
150-
let endingRoute;
151-
switch (this.router.currentRouteName) {
152-
case 'project-version.classes.class': {
153-
let className = this._getEncodedNameForCurrentClass();
154-
endingRoute = `classes/${className}`;
155-
break;
156-
}
157-
case 'project-version.classes.class.index': {
158-
let className = this._getEncodedNameForCurrentClass();
159-
endingRoute = `classes/${className}`;
160-
break;
161-
}
162-
case 'project-version.modules.module.index': {
163-
let moduleName = encodeURIComponent(
164-
this.paramsFor('project-version.modules.module').module
165-
);
166-
endingRoute = `modules/${moduleName}`;
167-
break;
168-
}
169-
case 'project-version.namespaces.namespace.index': {
170-
let namespaceName = this.paramsFor(
171-
'project-version.namespaces.namespace'
172-
).namespace;
173-
endingRoute = `namespaces/${namespaceName}`;
174-
break;
175-
}
176-
case 'project-version.classes.class.methods.index': {
177-
let className = this._getEncodedNameForCurrentClass();
178-
endingRoute = `classes/${className}/methods`;
179-
break;
180-
}
181-
case 'project-version.classes.class.events.index': {
182-
let className = this._getEncodedNameForCurrentClass();
183-
endingRoute = `classes/${className}/events`;
184-
break;
185-
}
186-
case 'project-version.classes.class.properties.index': {
187-
let className = this._getEncodedNameForCurrentClass();
188-
endingRoute = `classes/${className}/properties`;
189-
break;
190-
}
191-
case 'project-version.classes.class.methods.method': {
192-
let className = this._getEncodedNameForCurrentClass();
193-
let methodName = this.paramsFor(
194-
'project-version.classes.class.methods.method'
195-
).method;
196-
endingRoute = `classes/${className}/methods/${methodName}?anchor=${methodName}`;
197-
break;
198-
}
199-
case 'project-version.classes.class.events.event': {
200-
let className = this._getEncodedNameForCurrentClass();
201-
let eventName = this.paramsFor(
202-
'project-version.classes.class.events.event'
203-
).event;
204-
endingRoute = `classes/${className}/events/${eventName}?anchor=${eventName}`;
205-
break;
206-
}
207-
case 'project-version.classes.class.properties.property': {
208-
let className = this._getEncodedNameForCurrentClass();
209-
let propertyName = this.paramsFor(
210-
'project-version.classes.class.properties.property'
211-
).property;
212-
endingRoute = `classes/${className}/properties/${propertyName}?anchor=${propertyName}`;
213-
break;
214-
}
215-
default:
216-
endingRoute = '';
217-
break;
218-
}
219-
// if the user is navigating to/from api versions >= 2.16, take them
220-
// to the home page instead of trying to translate the url
221-
let shouldConvertPackages = this.shouldConvertPackages(
222-
ver,
223-
this.projectService.version
224-
);
225-
let isEmberProject = project === 'ember';
226-
if (!isEmberProject || !shouldConvertPackages) {
227-
this.router.transitionTo(
228-
`/${project}/${projectVersionID}/${endingRoute}`
229-
);
230-
} else {
231-
this.router.transitionTo(`/${project}/${projectVersionID}`);
232-
}
233-
}
234-
235147
// Input some version info, returns a boolean based on
236148
// whether the user is switching versions for a 2.16 docs release or later.
237149
// The urls for pre-2.16 classes and later packages are quite different

app/templates/project-version.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
<div class="select-container">
1818
<PowerSelect
19-
@onChange={{route-action "updateProject" this.activeProject}}
19+
@onChange={{this.updateProject}}
2020
@options={{this.projectVersions}}
2121
@selected={{this.selectedProjectVersion}}
2222
@ariaLabel="Select a version"

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@
100100
"ember-qunit": "^5.1.5",
101101
"ember-resolver": "^8.0.3",
102102
"ember-rfc176-data": "^0.3.17",
103-
"ember-route-action-helper": "^2.0.8",
104103
"ember-showdown-shiki": "^1.2.1",
105104
"ember-sinon": "^4.1.1",
106105
"ember-source": "~3.28.8",

pnpm-lock.yaml

Lines changed: 0 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)