Initial commit

This commit is contained in:
2021-04-14 17:26:22 +02:00
commit a149b40b8e
23 changed files with 4883 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
{
"title": "",
"libDir": "lib",
"paths": [],
"libraries": [
"enyo",
"moonstone",
"spotlight",
"layout",
"svg",
"enyo-ilib"
],
"sources": {
"enyo": "https://github.com/enyojs/enyo.git",
"moonstone": "https://github.com/enyojs/moonstone.git",
"spotlight": "https://github.com/enyojs/spotlight.git",
"layout": "https://github.com/enyojs/layout.git",
"svg": "https://github.com/enyojs/svg.git",
"enyo-ilib": "https://github.com/enyojs/enyo-ilib.git"
},
"targets": {
"enyo": "2.7.0",
"moonstone": "2.7.0",
"spotlight": "2.7.0",
"layout": "2.7.0",
"svg": "2.7.0",
"enyo-ilib": "2.7.0"
},
"production": false,
"devMode": true,
"cache": true,
"resetCache": false,
"trustCache": false,
"cacheFile": ".enyocache",
"clean": false,
"sourceMaps": true,
"externals": true,
"strict": false,
"skip": [],
"library": false,
"wip": false,
"outDir": "dist",
"outFile": "index.html",
"lessPlugins": [
{
"name": "resolution-independence",
"options": {
"baseSize": 24
}
}
],
"assetRoots": [],
"lessOnlyLess": false,
"minifyCss": false,
"inlineCss": true,
"outCssFile": "output.css",
"outJsFile": "output.js",
"inlineJs": true,
"templateIndex": "",
"watch": false,
"watchPaths": [],
"polling": false,
"pollingInterval": 100,
"headScripts": [],
"tailScripts": [],
"promisePolyfill": false,
"styleOnly": false,
"lessVars": []
}
+3
View File
@@ -0,0 +1,3 @@
.enyocache
dist/
node_modules/
+18
View File
@@ -0,0 +1,18 @@
[submodule "lib/enyo"]
path = lib/enyo
url = https://github.com/enyojs/enyo.git
[submodule "lib/moonstone"]
path = lib/moonstone
url = https://github.com/enyojs/moonstone.git
[submodule "lib/spotlight"]
path = lib/spotlight
url = https://github.com/enyojs/spotlight.git
[submodule "lib/layout"]
path = lib/layout
url = https://github.com/enyojs/layout.git
[submodule "lib/svg"]
path = lib/svg
url = https://github.com/enyojs/svg.git
[submodule "lib/enyo-ilib"]
path = lib/enyo-ilib
url = https://github.com/enyojs/enyo-ilib.git
+4
View File
@@ -0,0 +1,4 @@
dist
assets
lib
node_modules
+27
View File
@@ -0,0 +1,27 @@
{
"globals": {
"global": false,
"require": false,
"request": false,
"exports": true,
"module": true,
"module.exports": true,
"JSON": false
},
"es3": true,
"evil": false,
"regexdash": true,
"browser": true,
"node": true,
"wsh": false,
"trailing": false,
"sub": true,
"eqnull": true,
"laxbreak": true,
"laxcomma": true,
"curly": false,
"indent": 4,
"newcap": true,
"undef": true,
"unused": "vars"
}
+3
View File
@@ -0,0 +1,3 @@
.enyocache
dist/
lib/
+14
View File
@@ -0,0 +1,14 @@
/*
App-specific LESS/CSS would go here, but to make your application easier to
maintain, you should try to minimize the use of custom CSS.
Additionally, you can override any moonstone variables in this file. You
can also control the theme and change it from dark to light if desired by
adding the assignment:
@moon-theme: 'light';
*/
.main-view {
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

+13
View File
@@ -0,0 +1,13 @@
/**
Instantiate your enyo/Application kind in this file. Note, application
rendering should be deferred until the DOM is ready by wrapping it in a
call to ready().
*/
var
ready = require('enyo/ready'),
App = require('./src/App');
ready(function () {
new App();
});
Submodule
+1
Submodule lib/enyo added at 514d966a14
Submodule
+1
Submodule lib/enyo-ilib added at 8c26cea5ea
Submodule
+1
Submodule lib/layout added at 77803c63b0
Submodule
+1
Submodule lib/moonstone added at 7348fbb47c
Submodule
+1
Submodule lib/spotlight added at 0589121de0
Submodule
+1
Submodule lib/svg added at 860ed9e601
+4415
View File
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
{
"name": "newproject",
"version": "0.0.1",
"description": "An Enyo-based template to build web applications using HTML, CSS and JavaScript.",
"main": "index.js",
"moduleDir": "src",
"assets": [
"favicon.ico",
"assets/**/*.*",
"webosbrew-repository/**"
],
"styles": [
"css/*.less",
"css/*.css"
],
"devDependencies": {
"enyo-dev": "^1.0.0"
}
}
+13
View File
@@ -0,0 +1,13 @@
/**
Define your enyo/Application kind in this file.
*/
var
kind = require('enyo/kind'),
Application = require('enyo/Application'),
MainView = require('./views/MainView');
module.exports = kind({
kind: Application,
view: MainView
});
+109
View File
@@ -0,0 +1,109 @@
var
kind = require('enyo/kind'),
DetailsPanel = require('./DetailsPanel'),
Overlay = require('moonstone/Overlay'),
Item = require('moonstone/Item'),
IconButton = require('moonstone/IconButton'),
Scroller = require('moonstone/Scroller'),
MoonImage = require('moonstone/Image'),
EnyoImage = require('enyo/Image'),
Marquee = require('moonstone/Marquee'),
Panel = require('moonstone/Panel'),
Popup = require('moonstone/Popup'),
Spinner = require('moonstone/Spinner'),
DataGridList = require('moonstone/DataGridList'),
GridListImageItem = require('moonstone/GridListImageItem'), // FIXME: we use styles from that :/
AjaxSource = require('enyo/AjaxSource'),
Collection = require('enyo/Collection'),
SettingsPanel = require('./SettingsPanel.js');
var AppListItem = kind({
name: 'AppListItem',
kind: Item,
classes: 'moon-gridlist-imageitem horizontal-gridList-item horizontal-gridList-image-item', // moon-imageitem',
mixins: [Overlay.Support, Overlay.Selection],
components: [
{
kind: MoonImage,
name: 'img',
// placeholder: EnyoImage.placeholder,
style: 'width: 100px; height: 100px; float: left; padding-right: 20px; padding-top: 5px',
sizing: 'contain',
},
{name: 'caption', classes: 'caption', kind: Marquee.Text},
{name: 'subCaption', classes: 'sub-caption', kind: Marquee.Text},
],
published: {
caption: '',
subCaption: '',
},
bindings: [
{from: 'model.name', to: '$.caption.content'},
{from: 'model.id', to: '$.subCaption.content'},
{from: 'model.iconUri', to: '$.img.src'},
]
});
module.exports = kind({
name: 'BrowserPanel',
kind: Panel,
title: 'Homebrew Channel',
titleBelow: 'webosbrew.org',
// headerType: 'small',
headerComponents: [
{kind: IconButton, icon: 'rollbackward', ontap: 'refresh'},
{kind: IconButton, icon: 'gear', ontap: 'openSettings'},
],
components: [
{kind: Spinner, name: 'spinner', content: 'Loading...', center: true, middle: true},
{kind: Popup, name: 'errorPopup', content: 'An error occured while downloading repository.', modal: false, autoDismiss: true, allowBackKey: true},
{
name: 'appList', selection: false, fit: true, spacing: 20, minWidth: 500, minHeight: 120, kind: DataGridList, scrollerOptions: {kind: Scroller, vertical: 'scroll', horizontal: 'hidden', spotlightPagingControls: true}, components: [
{kind: AppListItem}
], ontap: 'itemSelected',
},
],
bindings: [
{from: 'apps', to: '$.appList.collection'},
{
from: 'apps.status', to: '$.spinner.showing', transform: function (value) {
return this.apps.isBusy() && !this.apps.isError();
}
},
{
from: 'apps.status', to: '$.errorPopup.showing', transform: function (value) {
return this.apps.isError();
}
},
],
create: function () {
this.inherited(arguments);
this.refresh();
},
refresh: function () {
console.info('refresh');
this.set('apps', new Collection({
source: new AjaxSource(),
url: '/webosbrew-repository/index.json',
}));
this.apps.fetch();
},
events: {
onRequestPushPanel: ''
},
itemSelected: function (sender, ev) {
if (ev.model) {
this.doRequestPushPanel({panel: {kind: DetailsPanel, model: ev.model}});
}
},
openSettings: function (sender, ev) {
this.doRequestPushPanel({
panel: {
kind: SettingsPanel,
}
});
},
});
+15
View File
@@ -0,0 +1,15 @@
var
kind = require('enyo/kind'),
Panel = require('moonstone/Panel');
module.exports = kind({
name: 'DetailsPanel',
kind: Panel,
title: '',
titleBelow: '',
headerType: 'medium',
bindings: [
{from: 'model.name', to: 'title'},
{from: 'model.id', to: 'titleBelow'},
],
});
+44
View File
@@ -0,0 +1,44 @@
var
kind = require('enyo/kind'),
Panels = require('moonstone/Panels'),
IconButton = require('moonstone/IconButton'),
BrowserPanel = require('./BrowserPanel.js');
module.exports = kind({
name: 'myapp.MainView',
classes: 'moon enyo-fit main-view',
components: [
{
kind: Panels,
pattern: 'activity',
hasCloseButton: false,
wrap: true,
popOnBack: true,
components: [
{
kind: BrowserPanel,
},
],
onTransitionFinish: 'transitionFinish',
}
],
handlers: {
onRequestPushPanel: 'requestPushPanel',
},
transitionFinish: function (evt, sender) {
document.title = this.$.panels.getActive().title;
},
/*
observers: [
// the path can be a single string or an array of strings
{method: 'panelChanged', path: ['$.panels.index']}
],
panelChanged: function (oldIndex, newIndex) {
console.info('PANEL CHANGED', oldIndex, newIndex);
// document.title = this.$.panels.getActive().title;
},
*/
requestPushPanel: function (sender, ev) {
this.$.panels.pushPanel(ev.panel);
},
});
+84
View File
@@ -0,0 +1,84 @@
var
kind = require('enyo/kind'),
Panel = require('moonstone/Panel'),
Scroller = require('moonstone/Scroller'),
Divider = require('moonstone/Divider'),
ToggleItem = require('moonstone/ToggleItem'),
Tooltip = require('moonstone/Tooltip'),
Group = require('enyo/Group'),
Popup = require('moonstone/Popup'),
TooltipDecorator = require('moonstone/TooltipDecorator'),
LabeledTextItem = require('moonstone/LabeledTextItem');
var magic = {t: 0, n: 0};
module.exports = kind({
name: 'SettingsPanel',
kind: Panel,
title: 'Settings',
headerType: 'medium',
components: [
{
kind: Scroller, fit: true, components: [
{
classes: 'moon-hspacing', components: [
{
components: [
{kind: Divider, content: 'Root configuration'},
{kind: ToggleItem, content: 'Telnet', checked: true, onchange: 'itemChanged'},
{kind: ToggleItem, content: 'SSH Server', onchange: 'itemChanged'},
{
kind: TooltipDecorator, components: [
{kind: ToggleItem, content: 'Disable metrics', onchange: 'itemChanged'},
{kind: Tooltip, content: 'This disables certain metrics reporting to TV manufacturer (crash logs, system logs)', position: 'below'}, // , position: 'right-below'}
], style: 'width: 100%',
},
{kind: Divider, content: 'System information'},
{
kind: LabeledTextItem,
label: 'webosbrew version',
text: '0.1.2.3',
ontap: 'versionTap',
},
{
kind: LabeledTextItem,
label: 'Root status',
text: 'working',
disabled: true,
},
],
classes: 'moon-6h',
style: 'vertical-align: top',
},
{
components: [
{kind: Divider, content: 'Repositories'},
{
kind: Group, onActivate: 'groupChanged', components: [
{kind: ToggleItem, content: 'Group Option 1'},
{kind: ToggleItem, content: 'Group Option 5'}
]
}
],
classes: 'moon-16h',
style: 'vertical-align: top',
}
]
}
]
},
{kind: Popup, name: 'errorPopup', content: 'An error occured while downloading repository.', allowHtml: true, modal: true, allowBackKey: true},
],
versionTap: function (sender, evt) {
var t = new Date().getTime();
if (t - magic.t > 5000) magic.n = 0;
magic.n += 1;
magic.t = t;
if (magic.n == 7) {
magic.n = 0;
this.$.errorPopup.set('content', '<img src="https://data4.cupsell.pl/upload/generator/247026/640x420/4465398_print_1.png?resize=max_sizes&key=55f9a22768eed085006592c1174c0235" />');
this.$.errorPopup.show();
}
},
});
+27
View File
@@ -0,0 +1,27 @@
[
{
"id": "com.moonlight",
"name": "Moonlight <i>TV</i>",
"iconUri": "https://raw.githubusercontent.com/mariotaku/moonlight-tv/main/deploy/webos/icon.png"
},
{
"id": "hbchannel",
"name": "Homebrew Channel",
"iconUri": "https://raw.githubusercontent.com/webosbrew/webos-homebrew-channel/main/frontend/icon160.png"
},
{
"id": "choclate-doom",
"name": "Choclate Doom",
"iconUri": "https://raw.githubusercontent.com/webosbrew/chocolate-doom/webos-tv/data/doom.png"
},
{
"id": "youtube.webos",
"name": "YouTube (adfree)",
"iconUri": "https://raw.githubusercontent.com/FriedChickenButt/youtube-webos/main/largeIcon.png"
},
{
"id": "youtube.webosaaaaaaaaaaaaaaaaaaaaa",
"name": "YouTube (adfree) longnaaaaaaaaaaaaaaameeeeeeeeeeeeeeeeeeeee",
"iconUri": "https://raw.githubusercontent.com/FriedChickenButt/youtube-webos/main/largeIcon.png"
}
]