Skip to content

Commit d96d49d

Browse files
authored
Merge pull request #2 from fleetbase/dev-v0.0.2
v0.0.2
2 parents f715b2a + 19952f1 commit d96d49d

39 files changed

Lines changed: 3983 additions & 1424 deletions

.eslintignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,18 @@
66

77
# misc
88
/coverage/
9+
/scripts/
910
!.*
1011
.*/
1112

1213
# ember-try
1314
/.node_modules.ember-try/
15+
/bower.json.ember-try
16+
/npm-shrinkwrap.json.ember-try
17+
/package.json.ember-try
18+
/package-lock.json.ember-try
19+
/yarn.lock.ember-try
20+
21+
#server
22+
/server
23+
/server_vendor

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module.exports = {
2424
'ember/no-get': 'off',
2525
'ember/classic-decorator-no-classic-methods': 'off',
2626
'no-prototype-builtins': 'off',
27-
'node/no-unpublished-require': [
27+
'n/no-unpublished-require': [
2828
'error',
2929
{
3030
allowModules: ['resolve', 'broccoli-funnel'],

.stylelintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use strict';
22

33
module.exports = {
4-
extends: ['stylelint-config-standard', 'stylelint-prettier/recommended'],
4+
extends: ['stylelint-config-standard', 'stylelint-prettier/recommended'],
55
};

.template-lintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = {
55
rules: {
66
'no-invalid-interactive': 'off',
77
'no-yield-only': 'off',
8-
'no-down-event-binding': 'off',
8+
'no-pointer-down-event-binding': 'off',
99
'table-groups': 'off',
1010
'link-href-attributes': 'off',
1111
'require-input-label': 'off',
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{{#if this.configLoaded}}
2+
<ContentPanel @title="Solid Server Config" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800 mb-4">
3+
<InputGroup @name="Server Host" @value={{this.host}} @placeholder="solid.myserver.com" />
4+
<InputGroup @name="Server Port" @value={{this.port}} @placeholder="3000" />
5+
<InputGroup>
6+
<Toggle @isToggled={{this.secure}} @onToggle={{fn (mut this.secure)}}>
7+
<span class="dark:text-gray-100 text-sm ml-2">Secure Server</span>
8+
</Toggle>
9+
</InputGroup>
10+
</ContentPanel>
11+
12+
<div class="mt-3 flex items-center justify-end">
13+
<Button @type="primary" @size="lg" @icon="save" @text={{t "common.save-changes"}} @onClick={{perform this.saveServerConfig}} @disabled={{not this.saveServerConfig.isIdle}} @isLoading={{not this.saveServerConfig.isIdle}} />
14+
</div>
15+
{{else}}
16+
<div class="flex items-center justify-center">
17+
<Spinner @loadingMessage="Loading server config..." />
18+
</div>
19+
{{/if}}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import Component from '@glimmer/component';
2+
import { tracked } from '@glimmer/tracking';
3+
import { inject as service } from '@ember/service';
4+
import { task } from 'ember-concurrency';
5+
6+
export default class AdminSolidServerConfigComponent extends Component {
7+
@service fetch;
8+
@service notifications;
9+
@tracked configLoaded = false;
10+
@tracked host;
11+
@tracked port;
12+
@tracked secure;
13+
14+
constructor() {
15+
super(...arguments);
16+
this.loadServerConfig.perform();
17+
}
18+
19+
getConfig() {
20+
return {
21+
host: this.host,
22+
port: this.port,
23+
secure: this.secure,
24+
};
25+
}
26+
27+
setConfig(config) {
28+
this.host = config.host;
29+
this.port = config.port;
30+
this.secure = config.secure;
31+
}
32+
33+
@task *loadServerConfig() {
34+
const config = yield this.fetch.get('server-config', {}, { namespace: 'solid/int/v1' });
35+
if (config) {
36+
this.setConfig(config);
37+
this.configLoaded = true;
38+
}
39+
}
40+
41+
@task *saveServerConfig() {
42+
try {
43+
const config = yield this.fetch.post('server-config', { server: this.getConfig() }, { namespace: 'solid/int/v1' });
44+
if (config) {
45+
this.setConfig(config);
46+
this.notifications.success('Solid server config udpated successfully.');
47+
}
48+
} catch (error) {
49+
this.notifications.serverError(error);
50+
}
51+
}
52+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<svg width={{this.width}} height={{this.height}} viewBox="0 0 352 322" xmlns="http://www.w3.org/2000/svg">
2+
<g fill-rule="nonzero" fill="none">
3+
<path d="M87.97296 282.3527L27.24133 177.02207c-5.62041-9.75765-5.62041-21.77908 0-31.53674L87.97296 40.2328c5.64643-9.78367 16.08061-15.79439 27.32143-15.79439h121.3852c11.26684 0 21.72704 6.01072 27.32143 15.7944l60.75765 105.30458c5.62041 9.75766 5.62041 21.77909 0 31.53674l-60.73163 105.33061c-5.64643 9.78367-16.08061 15.79439-27.32143 15.79439H115.37245c-11.31888-.05204-21.72704-6.08878-27.3995-15.84643z" fill="#111827" />
4+
<path d="M93.15102 275.19708l-57.1148-99.0597c-5.30816-9.1852-5.30816-20.50408 0-29.66326l57.1148-99.08572c5.33418-9.21122 15.14388-14.85765 25.73418-14.85765h114.2296c10.5903 0 20.42602 5.64643 25.73418 14.85765l57.16684 99.03368c5.30816 9.1852 5.30816 20.50408 0 29.66326L258.875 275.2231c-5.33418 9.21122-15.14388 14.85765-25.73418 14.85765H118.93724c-10.64234 0-20.45204-5.67245-25.78622-14.88367z" fill="#7C4DFF" />
5+
<path d="M118.46888 142.2328h117.53418c1.48316 0 2.65408-1.19695 2.65408-2.65409v-22.03928c0-14.6495-11.89132-26.54085-26.54081-26.54085h-70.56735c-20.5301-.026-37.15722 16.60105-37.15722 37.13115-.02594 7.83214 6.271 14.10306 14.07712 14.10306zM129.99592 239.60116H200.225c21.20663 0 38.43214-17.22551 38.43214-38.43214 0-7.07755-5.72449-12.82806-12.82806-12.82806H106.94184c-1.45715 0-2.55005 1.17091-2.55005 2.55v23.05408c-.02597 14.18112 11.47505 25.65612 25.60413 25.65612z" fill="#F7F7F7" />
6+
<path d="M109.59592 139.3185l87.66275 87.66276c5.80255 5.80255 15.19592 5.80255 20.99847 0l15.19592-15.19592c5.80255-5.80255 5.80255-15.19591 0-20.99847l-87.63673-87.66275c-5.80255-5.80255-15.19592-5.80255-20.99847 0l-15.19592 15.19592c-5.8546 5.80255-5.8546 15.22194-.02602 20.99847z" fill="#F7F7F7" />
7+
<path fill="#444" opacity=".3" d="M198.6898 228.46443l-51.4944-40.12347h11.39695zM144.35918 101.66698l40.56582 40.56581h13.7648z" />
8+
</g>
9+
</svg>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Component from '@glimmer/component';
2+
import { tracked } from '@glimmer/tracking';
3+
4+
export default class SolidBrandIconComponent extends Component {
5+
@tracked width = 19;
6+
@tracked height = 19;
7+
constructor(owner, { options }) {
8+
super(...arguments);
9+
const { width = 19, height = 19 } = options || {};
10+
this.width = width;
11+
this.height = height;
12+
}
13+
}

addon/controllers/application.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import Controller from '@ember/controller';
2+
import { inject as service } from '@ember/service';
3+
import { task } from 'ember-concurrency';
4+
5+
export default class ApplicationController extends Controller {
6+
@service universe;
7+
@service fetch;
8+
9+
constructor() {
10+
super(...arguments);
11+
this.universe.on('sidebarContext.available', (sidebarContext) => {
12+
sidebarContext.hideNow();
13+
});
14+
}
15+
16+
@task *authenticate() {
17+
const { authenticationUrl, identifier } = yield this.fetch.get('request-authentication', {}, { namespace: 'solid/int/v1' });
18+
if (authenticationUrl) {
19+
window.location.href = `${authenticationUrl}/${identifier}`;
20+
}
21+
}
22+
23+
@task *getAccountIndex() {
24+
const response = yield this.fetch.get('account', {}, { namespace: 'solid/int/v1' });
25+
console.log('[response]', response);
26+
}
27+
}

addon/engine.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import loadInitializers from 'ember-load-initializers';
33
import Resolver from 'ember-resolver';
44
import config from './config/environment';
55
import services from '@fleetbase/ember-core/exports/services';
6+
import AdminSolidServerConfigComponent from './components/admin/solid-server-config';
7+
import SolidBrandIconComponent from './components/solid-brand-icon';
68

79
const { modulePrefix } = config;
810
const externalRoutes = ['console', 'extensions'];
@@ -14,7 +16,25 @@ export default class SolidEngine extends Engine {
1416
services,
1517
externalRoutes,
1618
};
17-
setupExtension = function (app, engine, universe) {};
19+
setupExtension = function (app, engine, universe) {
20+
// register menu item in header
21+
universe.registerHeaderMenuItem('Solid', 'console.solid-protocol', { iconComponent: SolidBrandIconComponent, iconComponentOptions: { width: 19, height: 19 }, priority: 5 });
22+
23+
// register admin settings -- create a solid server menu panel with it's own setting options
24+
universe.registerAdminMenuPanel(
25+
'Solid Protocol',
26+
[
27+
{
28+
title: 'Solid Server Config',
29+
icon: 'sliders',
30+
component: AdminSolidServerConfigComponent,
31+
},
32+
],
33+
{
34+
slug: 'solid-server',
35+
}
36+
);
37+
};
1838
}
1939

2040
loadInitializers(SolidEngine, modulePrefix);

0 commit comments

Comments
 (0)