diff --git a/res/app/app.js b/res/app/app.js index a2a5a6e4..5fda048a 100644 --- a/res/app/app.js +++ b/res/app/app.js @@ -8,7 +8,9 @@ angular.module('app', [ 'gettext', require('./layout').name, require('./device-list').name, - require('./device-control').name + require('./device-control').name, + require('./settings').name, + require('./help').name ]) .config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { diff --git a/res/app/components/stf/settings/index.js b/res/app/components/stf/settings/index.js new file mode 100644 index 00000000..7b9933be --- /dev/null +++ b/res/app/components/stf/settings/index.js @@ -0,0 +1,6 @@ +require('angular-localForage') + +module.exports = angular.module('stf/settings', [ + 'LocalForageModule' +]) + .factory('SettingsService', require('./settings-service')) diff --git a/res/app/components/stf/settings/settings-service.js b/res/app/components/stf/settings/settings-service.js new file mode 100644 index 00000000..ac084a15 --- /dev/null +++ b/res/app/components/stf/settings/settings-service.js @@ -0,0 +1,6 @@ +module.exports = function SettingsServiceFactory($rootScope, $localForage) { + + + + return $localForage +} diff --git a/res/app/help/help-controller.js b/res/app/help/help-controller.js new file mode 100644 index 00000000..da7a4cc8 --- /dev/null +++ b/res/app/help/help-controller.js @@ -0,0 +1,11 @@ +module.exports = function HelpCtrl($scope) { + $scope.links = { + manualBasic: '/manual-basic/', + manualAdvanced: '/manual-advanced/', + wiki: 'http://amewiki.cadc.cyberagent.local/display/STF', + chat: 'https://cyberagent.hipchat.com/chat?focus_jid=44808_stf@conf.hipchat.com', + tracker: 'http://jira.amb.ca.local/browse/STF', + feedback: 'http://jira.amb.ca.local/secure/CreateIssueDetails!init.jspa?pid=10521&issuetype=14&summary=STF%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B&description=%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E5%86%85%E5%AE%B9%E3%81%AF%E3%82%B3%E3%82%B3%E3%81%AB%E8%A8%98%E8%BC%89%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84', + mail: 'stf@cyberagent.co.jp' + } +} \ No newline at end of file diff --git a/res/app/help/help.jade b/res/app/help/help.jade new file mode 100644 index 00000000..f7d8b18b --- /dev/null +++ b/res/app/help/help.jade @@ -0,0 +1,78 @@ +.container-fluid.main-content + .page-title + //h1 + | Help + ul.timeline + li + .timeline-time + strong 使い方が知りたい + | どうやって使うの? + .timeline-icon + .bg-primary + i.fa.fa-book + .timeline-content + h2 マニュアル + p マニュアルはBasicとAdvancedに分かれています。 + p Basicは誰でも使える機能の説明になります。 + p Advancedはエンジニア向けの高度な機能の説明になります。 + p 最新の情報はコンフルスペースになります + a(ng-href='{{links.manualAdvanced}}', target='_blank', role='button').btn.btn-danger.pull-right + i.fa.fa-book + | Advanced + a(ng-href='{{links.manualBasic}}', target='_blank', role='button').btn.btn-danger.pull-right + i.fa.fa-book + | Basic + a(ng-href='{{links.wiki}}', target='_blank', role='button').btn.btn-primary + i.fa.fa-book + | コンフルスペース + .clearfix + li + .timeline-time + strong 使い方、機能追加、一般な問い合わせ + | 新しい機能が欲しい + .timeline-icon + .bg-warning + i.fa.fa-ticket + .timeline-content + h2 お問い合わせ + p お問い合わせはJIRAになります。 + p 質問や疑問、改善や機能追加などの要望は大歓迎です。 + p メールでも問い合わせが可能です。 + a(ng-href='{{links.feedback}}', target='_blank', role='button').btn.btn-warning + i.fa.fa-ticket + | JIRAでお問い合わせ + a(ng-href='mailto:{{links.mail}}', role='button').btn.btn-default + i.fa.fa-envelope + | メールでお問い合わせ + + li + .timeline-time + strong デバイスが今落ちた、よく分からない助けて + | 今すぐ聞きたい + .timeline-icon + .bg-info + i.fa.fa-comments + .timeline-content + h2 チャットお問い合わせ + p リアルタイムお問い合わせはHipChatのSTFルームになります。 + p 質問や疑問、改善や機能追加などの要望は大歓迎です。 + a(ng-href='{{links.chat}}', target='_blank', role='button').btn.btn-info.pull-right + i.fa.fa-comments + | HipChatでお問い合わせ + .clearfix + li + .timeline-time + strong バグを見つかった + | あのバグどうなっている? + .timeline-icon + .bg-success + i.fa.fa-bug + .timeline-content + h2 バグトラッカー + p プロジェクトのチケットトラッカーはこちらのJIRAになります。 + p バグや機能のトラッカーです。 + a(ng-href='{{links.tracker}}', target='_blank', role='button').btn.btn-success + i.fa.fa-bug + | JIRAチケット + + diff --git a/res/app/help/index.js b/res/app/help/index.js new file mode 100644 index 00000000..885b2d86 --- /dev/null +++ b/res/app/help/index.js @@ -0,0 +1,8 @@ +module.exports = angular.module('help', []) + .config(['$routeProvider', function ($routeProvider) { + $routeProvider.when('/help', { + template: require('./help.jade'), + controller: 'HelpCtrl' + }) + }]) + .controller('HelpCtrl', require('./help-controller')) diff --git a/res/app/layout/layout-controller.js b/res/app/layout/layout-controller.js index f4f4dbe7..d851cc97 100644 --- a/res/app/layout/layout-controller.js +++ b/res/app/layout/layout-controller.js @@ -1,3 +1,2 @@ module.exports = function LayoutCtrl($scope) { - } diff --git a/res/app/settings/index.js b/res/app/settings/index.js new file mode 100644 index 00000000..7958ba28 --- /dev/null +++ b/res/app/settings/index.js @@ -0,0 +1,9 @@ +module.exports = angular.module('ui-settings', [ + require('./language').name +]) + .config(['$routeProvider', function ($routeProvider) { + $routeProvider.when('/settings', { + template: require('./settings.jade') + }) + }]) + //.controller('SettingsCtrl', require('./settings-controller')) diff --git a/res/app/settings/language/index.js b/res/app/settings/language/index.js new file mode 100644 index 00000000..8838d1b0 --- /dev/null +++ b/res/app/settings/language/index.js @@ -0,0 +1,9 @@ +module.exports = angular.module('stf-ui-language', [ +// require('stf/settings').name +]) + .run(["$templateCache", function($templateCache) { + $templateCache.put('language.jade', require('./language.jade')) + }]) + .factory('LanguageService', require('./language-service')) + .controller('LanguageCtrl', require('./language-controller')) + \ No newline at end of file diff --git a/res/app/settings/language/language-controller.js b/res/app/settings/language/language-controller.js new file mode 100644 index 00000000..8d160716 --- /dev/null +++ b/res/app/settings/language/language-controller.js @@ -0,0 +1,21 @@ +module.exports = function LanguageCtrl($scope, LanguageService, SettingsService) { //gettextCatalog, +// SettingsService.sync($scope, 'Language', { +// language: LanguageService.detectedLanguage +// }) + + //SettingsService.set('') + console.log('hey') + + + //SettingsService.set('valueCrazy', 35) + //SettingsService.set('valueCrazyNew', {one: 1, two: 35.3, three: '日本語', four: [1, 2, 3, 4]}) + + //console.log('he') + //console.log(SettingsService.get('valueCrazy')) + +// $scope.$watch('language', function (newValue) { +// gettextCatalog.currentLanguage = newValue +// }) +// +// $scope.supportedLanguages = LanguageService.supportedLanguages +} diff --git a/res/app/settings/language/language-service.js b/res/app/settings/language/language-service.js new file mode 100644 index 00000000..4cd8a092 --- /dev/null +++ b/res/app/settings/language/language-service.js @@ -0,0 +1,25 @@ +//var _ = require('lodash') + +module.exports = function LanguageServiceFactory() { + alert('he') + + var LanguageService = {} + + LanguageService.supportedLanguages = [ + {code: 'en', name: 'English'}, + {code: 'ja', name: '日本語'} + ] + + var browserLocale = navigator.language || navigator.userLanguage || 'en-US' + var browserLanguage = browserLocale.substring(0, 2) + var detectedLanguage = _.some(LanguageService.supportedLanguages, {code: browserLanguage}) ? browserLanguage : 'en' + var defaultLanguage = 'ja' + LanguageService.detectedLanguage = defaultLanguage + LanguageService.selectedLanguage = defaultLanguage + + LanguageService.getSelectedLanguage = function () { + return LanguageService.selectedLanguage = defaultLanguage //WebStorage.get('Language.language') || defaultLanguage + } + + return LanguageService +} diff --git a/res/app/settings/language/language.jade b/res/app/settings/language/language.jade new file mode 100644 index 00000000..dad6be6d --- /dev/null +++ b/res/app/settings/language/language.jade @@ -0,0 +1,8 @@ +.widget-container.fluid-height + .heading + i.fa.fa-flag + span(translate) Language + .widget-content.padded + .form-horizontal + .form-group + select.form-control(ng-model='language', ng-options='l.code as l.name for l in supportedLanguages') diff --git a/res/app/settings/settings.jade b/res/app/settings/settings.jade new file mode 100644 index 00000000..2cccb5ea --- /dev/null +++ b/res/app/settings/settings.jade @@ -0,0 +1,65 @@ +div(pane='center') + .row + .col-md-4 + .widget-container.fluid-height + .heading + i.fa.fa-save + span(translate) Local storage + .widget-content.padded + button(ng-click='resetSettings()').btn.btn-danger + i.fa.fa-trash-o + span(translate) Reset Settings + .col-md-4 + div(ng-include='"language.jade"') + .col-md-4 + .widget-container.fluid-height + .heading + i.fa.fa-exclamation-circle + span(translate) Notifications + .widget-content.padded + label.checkbox + input(type='checkbox', ng-model='notificationsEnabled', ng-click='enableNotifications()', disabled) + span(translate) Enable notifications + + .row //(ng-controller='PortForwardingCtrl') + .col-md-12 + .widget-container.fluid-height + .heading + i.fa.fa-arrow-circle-o-right + span(translate) Reverse Port Forwarding + .widget-content.padded + div //(ng-controller='PortForwardingCtrl') + .xcol-md-6 + //label.checkbox + input(type='checkbox', ng-model='autoPortForwarding', ng-disabled='true') + span Auto-enable reverse port forwarding on connect + table(ng-table='portsTable').table + thead + tr + th + div {{"Target IP / Hostname"|translate}} + th + div {{"Target Port"|translate}} + th + div {{"Device Port"|translate}} + tbody + tr(ng-repeat='result in $data') + td(data-title="'Target IP / Hostname'") + input(type='text', ng-model='result.targetHost', placeholder='{{"Target host (detect if blank)"|translate}}') + td(data-title="'Target Port'") + input(type='number', ng-model='result.targetPort', ng-change='targetPortChanged(result)', placeholder='{{"Example: 3000"|translate}}') + td(data-title="'Device Port'") + input(type='number', ng-model='result.devicePort', placeholder='{{"Example: 3000"|translate}}') + //td(titlew) + button(ng-click='forwarding = !forwarding', ng-class="{active: forwarding}").btn.btn-primary + i.fa(ng-class="{'fa-arrow-circle-right': !forwarding, 'fa-times-circle': forwarding}") + span(ng-show='forwarding', translate) Unforward Ports + span(ng-hide='forwarding', translate) Forward Ports + table(ng-table='deviceStatusTable', ng-hide='!devicesStatus.length').table + tr(ng-repeat='result in $data') + td(title="'Device'") + p {{ result.deviceId }} + td(title="'Reachable'") + i(ng-class="{'text-status-on': result.value.connectable, 'text-status-off': !result.value.connectable}").fa.fa-circle + td(title="'Connected'") + i(ng-class="{'text-status-on': result.value.connected, 'text-status-off': !result.value.connected}").fa.fa-circle