@ -0,0 +1,3 @@
|
||||
.idea
|
||||
node_modules
|
||||
nativeDroid2-master
|
@ -0,0 +1,9 @@
|
||||
Gruntfile.js
|
||||
tasks
|
||||
node_modules
|
||||
nativeDroid2-master
|
||||
.idea
|
||||
.git
|
||||
.travis.yml
|
||||
appveyor.yml
|
||||
test
|
@ -0,0 +1,7 @@
|
||||
os:
|
||||
- linux
|
||||
language: node_js
|
||||
node_js:
|
||||
- '4'
|
||||
- '8'
|
||||
- '10'
|
@ -0,0 +1,269 @@
|
||||
// To use this file in WebStorm, right click on the file name in the Project Panel (normally left) and select "Open Grunt Console"
|
||||
|
||||
/** @namespace __dirname */
|
||||
/* jshint -W097 */// jshint strict:false
|
||||
/*jslint node: true */
|
||||
"use strict";
|
||||
|
||||
module.exports = function (grunt) {
|
||||
|
||||
var srcDir = __dirname + '/';
|
||||
var dstDir = srcDir + '.build/';
|
||||
var pkg = grunt.file.readJSON('package.json');
|
||||
var iopackage = grunt.file.readJSON('io-package.json');
|
||||
var version = (pkg && pkg.version) ? pkg.version : iopackage.common.version;
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
pkg: pkg,
|
||||
clean: {
|
||||
all: ['tmp/*.json', 'tmp/*.zip', 'tmp/*.jpg', 'tmp/*.jpeg', 'tmp/*.png',
|
||||
dstDir + '*.json', dstDir + '*.zip', dstDir + '*.jpg', dstDir + '*.jpeg', dstDir + '*.png']
|
||||
},
|
||||
replace: {
|
||||
core: {
|
||||
options: {
|
||||
patterns: [
|
||||
{
|
||||
match: /version:\s*"[\.0-9]*"/,
|
||||
replacement: 'version: "' + version + '"'
|
||||
},
|
||||
{
|
||||
match: /"version":\s*"[\.0-9]*",/g,
|
||||
replacement: '"version": "' + version + '",'
|
||||
},
|
||||
{
|
||||
match: /\# yunkong2 mobile [\.0-9]*/,
|
||||
replacement: '# yunkong2 mobile ' + version
|
||||
},
|
||||
{
|
||||
match: /\# dev \d*/,
|
||||
replacement: '# dev 0'
|
||||
}
|
||||
]
|
||||
},
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: [
|
||||
srcDir + 'package.json',
|
||||
srcDir + 'io-package.json'
|
||||
],
|
||||
dest: srcDir
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: [
|
||||
srcDir + 'www/index.html',
|
||||
srcDir + 'www/cache.manifest'
|
||||
],
|
||||
dest: srcDir + 'www'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: [
|
||||
srcDir + 'www/js/mobile.js'
|
||||
],
|
||||
dest: srcDir + 'www/js'
|
||||
}
|
||||
]
|
||||
},
|
||||
prepublish: {
|
||||
options: {
|
||||
patterns: [
|
||||
{
|
||||
match: /\<\!--html manifest="cache.manifest" lang="de" xmlns="http:\/\/www.w3.org\/1999\/html"--\>/,
|
||||
replacement: '<html manifest="cache.manifest" lang="de" xmlns="http://www.w3.org/1999/html">'
|
||||
}
|
||||
]
|
||||
},
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: [
|
||||
srcDir + 'www/index.html'
|
||||
],
|
||||
dest: srcDir + 'www'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
// Javascript code styler
|
||||
jscs: require(__dirname + '/tasks/jscs.js'),
|
||||
// Lint
|
||||
jshint: require(__dirname + '/tasks/jshint.js'),
|
||||
http: {
|
||||
get_hjscs: {
|
||||
options: {
|
||||
url: 'https://git.spacen.net/yunkong2/yunkong2.js-controller/master/tasks/jscs.js'
|
||||
},
|
||||
dest: 'tasks/jscs.js'
|
||||
},
|
||||
get_jshint: {
|
||||
options: {
|
||||
url: 'https://git.spacen.net/yunkong2/yunkong2.js-controller/master/tasks/jshint.js'
|
||||
},
|
||||
dest: 'tasks/jshint.js'
|
||||
},/*
|
||||
get_gruntfile: {
|
||||
options: {
|
||||
url: 'https://git.spacen.net/yunkong2/yunkong2.build/master/adapters/Gruntfile.js'
|
||||
},
|
||||
dest: 'Gruntfile.js'
|
||||
},*/
|
||||
get_utilsfile: {
|
||||
options: {
|
||||
url: 'https://git.spacen.net/yunkong2/yunkong2.build/master/adapters/utils.js'
|
||||
},
|
||||
dest: 'lib/utils.js'
|
||||
},
|
||||
get_jscsRules: {
|
||||
options: {
|
||||
url: 'https://git.spacen.net/yunkong2/yunkong2.js-controller/master/tasks/jscsRules.js'
|
||||
},
|
||||
dest: 'tasks/jscsRules.js'
|
||||
},
|
||||
get_iconOnline: {
|
||||
options: {
|
||||
encoding: null,
|
||||
url: iopackage.common.extIcon || 'https://git.spacen.net/yunkong2/yunkong2.js-controller/master/adapter/example/admin/example.png'
|
||||
},
|
||||
dest: dstDir + 'yunkong2.adapter.' + iopackage.common.name + '.png'
|
||||
|
||||
},
|
||||
get_iconOffline: {
|
||||
options: {
|
||||
encoding: null,
|
||||
url: iopackage.common.extIcon || 'https://git.spacen.net/yunkong2/yunkong2.js-controller/master/adapter/example/admin/example.png'
|
||||
},
|
||||
dest: dstDir + 'yunkong2.adapter.offline.' + iopackage.common.name + '.png'
|
||||
|
||||
}
|
||||
},
|
||||
compress: {
|
||||
adapter: {
|
||||
options: {
|
||||
archive: dstDir + 'yunkong2.adapter.' + iopackage.common.name + '.zip'
|
||||
},
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
src: ['**', '!tasks/*', '!Gruntfile.js', '!node_modules/**/*', '!build/**/*'],
|
||||
dest: '/',
|
||||
cwd: srcDir
|
||||
}
|
||||
]
|
||||
},
|
||||
adapterOffline: {
|
||||
options: {
|
||||
archive: dstDir + 'yunkong2.adapter.offline.' + iopackage.common.name + '.zip'
|
||||
},
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
src: ['**',
|
||||
'!tasks/*',
|
||||
'!Gruntfile.js',
|
||||
'!build/**/*',
|
||||
'!node_modules/grunt/**/*',
|
||||
'!node_modules/grunt*/**/*'
|
||||
],
|
||||
dest: '/',
|
||||
cwd: srcDir
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
exec: {
|
||||
npm: {
|
||||
cmd: 'npm install'
|
||||
}
|
||||
},
|
||||
copy: {
|
||||
json: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: srcDir,
|
||||
src: ['io-package.json'],
|
||||
dest: dstDir,
|
||||
rename: function (dest, src) {
|
||||
return dstDir + 'yunkong2.adapter.offline.' + iopackage.common.name + '.json';
|
||||
}
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: srcDir,
|
||||
src: ['io-package.json'],
|
||||
dest: dstDir,
|
||||
rename: function (dest, src) {
|
||||
return dstDir + 'yunkong2.adapter.' + iopackage.common.name + '.json';
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('updateReadme', function () {
|
||||
var readme = grunt.file.read('README.md');
|
||||
var pos = readme.indexOf('## Changelog\r\n');
|
||||
if (pos != -1) {
|
||||
var readmeStart = readme.substring(0, pos + '## Changelog\r\n'.length);
|
||||
var readmeEnd = readme.substring(pos + '## Changelog\r\n'.length);
|
||||
|
||||
if (iopackage.common && readme.indexOf(iopackage.common.version) == -1) {
|
||||
var timestamp = new Date();
|
||||
var date = timestamp.getFullYear() + '-' +
|
||||
("0" + (timestamp.getMonth() + 1).toString(10)).slice(-2) + '-' +
|
||||
("0" + (timestamp.getDate()).toString(10)).slice(-2);
|
||||
|
||||
var news = "";
|
||||
if (iopackage.common.whatsNew) {
|
||||
for (var i = 0; i < iopackage.common.whatsNew.length; i++) {
|
||||
if (typeof iopackage.common.whatsNew[i] == 'string') {
|
||||
news += '* ' + iopackage.common.whatsNew[i] + '\r\n';
|
||||
} else {
|
||||
news += '* ' + iopackage.common.whatsNew[i].en + '\r\n';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grunt.file.write('README.md', readmeStart + '### ' + iopackage.common.version + ' (' + date + ')\r\n' + (news ? news + '\r\n\r\n' : '\r\n') + readmeEnd);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.loadNpmTasks('grunt-replace');
|
||||
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||
grunt.loadNpmTasks('grunt-jscs');
|
||||
grunt.loadNpmTasks('grunt-http');
|
||||
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||
grunt.loadNpmTasks('grunt-contrib-compress');
|
||||
grunt.loadNpmTasks('grunt-exec');
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
|
||||
grunt.registerTask('default', [
|
||||
'exec',
|
||||
'http',
|
||||
'clean',
|
||||
'replace:core',
|
||||
'updateReadme',
|
||||
'compress',
|
||||
'copy',
|
||||
'jshint',
|
||||
'jscs'
|
||||
]);
|
||||
grunt.registerTask('prepublish', [
|
||||
'http',
|
||||
'replace'
|
||||
]);
|
||||
|
||||
grunt.registerTask('p', [
|
||||
'replace'
|
||||
]);
|
||||
};
|
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-2016 bluefox<dogafox@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -0,0 +1,291 @@
|
||||
![Logo](admin/mobile.png)
|
||||
# yunkong2.mobile
|
||||
=================
|
||||
|
||||
[![NPM version](http://img.shields.io/npm/v/yunkong2.mobile.svg)](https://www.npmjs.com/package/yunkong2.mobile)
|
||||
[![Downloads](https://img.shields.io/npm/dm/yunkong2.mobile.svg)](https://www.npmjs.com/package/yunkong2.mobile)
|
||||
|
||||
[![NPM](https://nodei.co/npm/yunkong2.mobile.png?downloads=true)](https://nodei.co/npm/yunkong2.mobile/)
|
||||
|
||||
jQuery Mobile based user interface.
|
||||
|
||||
![Screen](img/screen.png)
|
||||
|
||||
## Usage
|
||||
To use mobile UI you need to create the logical structure in admin.
|
||||
|
||||
E.g.:
|
||||
Go to the tab "Enums" and create new enum, e.g. "customs".
|
||||
![Slider](img/starting1.png)
|
||||
|
||||
Create new enum group in "enum.customs", e.g. "controls"
|
||||
![Slider](img/starting2.png)
|
||||
|
||||
Add some states to "enum.customs.controls"
|
||||
![Slider](img/starting3.png)
|
||||
|
||||
![Slider](img/starting4.png)
|
||||
|
||||
Go to mobile page, press on "Info" (top, right) and press "Refresh" to load objects from yunkong2
|
||||
![Slider](img/starting5.png)
|
||||
|
||||
After reload you can go to "Customs => controls"
|
||||
![Slider](img/starting6.png)
|
||||
|
||||
|
||||
## Supported types
|
||||
|
||||
### Sliders:
|
||||
|
||||
![Slider](img/widget-slider.png)
|
||||
|
||||
- role = "level.dimmer"
|
||||
- role = "level.blind"
|
||||
- role consists "level", common.type is "number", common.write is "true" and common.max is defined
|
||||
- common.type = "number", common.write is "true" and common.max is defined
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.inputSlider",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Slider",
|
||||
"type": "number",
|
||||
"read": true,
|
||||
"write": true,
|
||||
"min": 0,
|
||||
"max": 100
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Buttons (must be explicit set to visible via edit mode):
|
||||
|
||||
![Button](img/widget-button.png)
|
||||
|
||||
- role consists "button"
|
||||
- role consists "action"
|
||||
|
||||
Buttons are invisible by default. They just writes "true" if pressed.
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.inputButton",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Button",
|
||||
"role": "button",
|
||||
"type": "boolean",
|
||||
"write": true
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Switch:
|
||||
|
||||
![Switch](img/widget-switch.png)
|
||||
|
||||
- common.type = "boolean", common.write is "true"
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.inputSwitch",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Switch",
|
||||
"type": "boolean",
|
||||
"write": true
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Set with input field:
|
||||
|
||||
![Input field](img/widget-input-number.png)
|
||||
|
||||
- common.type = "number", common.max is undefined, common.write is "true", common.states is undefined
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.inputNumber",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Number",
|
||||
"type": "number",
|
||||
"write": true
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Set with states:
|
||||
|
||||
![States](img/widget-value-states.png)
|
||||
|
||||
- common.type = "number", common.max is undefined, common.write is "true", common.states is defined
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.inputNumber",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Number",
|
||||
"type": "number",
|
||||
"write": true,
|
||||
"states": {
|
||||
"1": "Value 1",
|
||||
"2": "Value 2"
|
||||
}
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Show boolean value:
|
||||
|
||||
![Boolean value](img/widget-value-boolean.png)
|
||||
|
||||
- common.write is "false" and common.type is "boolean"
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.valueBoolean",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Boolean value",
|
||||
"type": "bolean"
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Show value:
|
||||
|
||||
![Number value](img/widget-value-number.png)
|
||||
|
||||
- common.write is "false" and common.type is not "boolean"
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"_id": "javascript.0.mobile.valueNumber",
|
||||
"type": "state",
|
||||
"common": {
|
||||
"name": "Number value",
|
||||
"type": "number",
|
||||
"unit": "%"
|
||||
},
|
||||
"native": {}
|
||||
}
|
||||
```
|
||||
|
||||
## ToDO:
|
||||
- edit of Icon
|
||||
- show some widgets with more icons
|
||||
- tablet view
|
||||
|
||||
## Changelog
|
||||
|
||||
#### 0.4.12 (2017-11-14)
|
||||
* (Apollon77) update adapter type
|
||||
|
||||
#### 0.4.11 (2017-07-12)
|
||||
* (BasGo) Fixed blind states
|
||||
|
||||
#### 0.4.10 (2016-11-08)
|
||||
* (bluefox) Better cloud support
|
||||
|
||||
#### 0.4.9 (2016-10-29)
|
||||
* (bluefox) Fix rooms rendering
|
||||
* (bluefox) add green, red, blue, white types
|
||||
|
||||
#### 0.4.8 (2016-10-09)
|
||||
* (bluefox) implement type blind
|
||||
|
||||
#### 0.4.7 (2016-09-10)
|
||||
* (bluefox) make narrow screen on wide displays
|
||||
* (bluefox) fix some widgets
|
||||
|
||||
#### 0.4.6 (2016-09-03)
|
||||
* (bluefox) support of custom images
|
||||
* (bluefox) fix input number and select value
|
||||
|
||||
#### 0.4.5 (2016-07-01)
|
||||
* (bluefox) fix open first page
|
||||
|
||||
#### 0.4.4 (2016-06-24)
|
||||
* (bluefox) reload if problems occur
|
||||
|
||||
#### 0.4.3 (2016-06-24)
|
||||
* (bluefox) just check invalid objects
|
||||
|
||||
#### 0.4.2 (2016-06-14)
|
||||
* (bluefox) update version number
|
||||
|
||||
#### 0.4.1 (2016-05-12)
|
||||
* (bluefox) fix control of logical states
|
||||
|
||||
#### 0.4.0
|
||||
* (bluefox) add theme switcher
|
||||
|
||||
#### 0.3.0
|
||||
* (bluefox) fix problem with room names with spaces
|
||||
* (bluefox) implement side panel
|
||||
|
||||
#### 0.2.2
|
||||
* (bluefox) fix locations in edit mode
|
||||
* (bluefox) enable visibility of indicators
|
||||
|
||||
#### 0.2.1
|
||||
* (bluefox) fix some errors
|
||||
|
||||
#### 0.2.0
|
||||
* (bluefox) sorting and edit name
|
||||
|
||||
#### 0.1.1
|
||||
* (bluefox) fix errors for some devices
|
||||
|
||||
#### 0.1.0
|
||||
* (bluefox) edit of visibility
|
||||
|
||||
#### 0.0.4
|
||||
* (bluefox) first version. No edit possible.
|
||||
|
||||
## License
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-2016 bluefox <dogafox@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -0,0 +1,91 @@
|
||||
<html>
|
||||
|
||||
<!-- these 4 files always have to be included -->
|
||||
<link rel="stylesheet" type="text/css" href="../../lib/css/themes/jquery-ui/redmond/jquery-ui.min.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../lib/css/jquery.multiselect-1.13.css"/>
|
||||
<script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script>
|
||||
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
|
||||
<script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script>
|
||||
|
||||
<!-- these two file always have to be included -->
|
||||
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
|
||||
<script type="text/javascript" src="../../js/translate.js"></script>
|
||||
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
|
||||
|
||||
<style>
|
||||
.table_header {
|
||||
background-color: blue;
|
||||
color: white;
|
||||
}
|
||||
.ip {
|
||||
width: 150px;
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<!-- you have to define 2 functions in the global scope: -->
|
||||
<script type="text/javascript">
|
||||
function setValue(id, value) {
|
||||
// example: select elements with id=key and class=value and insert value
|
||||
if ($('#' + id + '.value').attr('type') == 'checkbox') {
|
||||
$('#' + id + '.value').prop('checked', value).change(function() {
|
||||
changed = true;
|
||||
$('#save').button("enable");
|
||||
});
|
||||
} else {
|
||||
$('#' + id + '.value').val(value).change(function() {
|
||||
changed = true;
|
||||
$('#save').button("enable");
|
||||
}).keyup(function() {
|
||||
// Chack that only numbers entered
|
||||
if ($(this).hasClass('number')) {
|
||||
var val = $(this).val();
|
||||
if (val) {
|
||||
var newVal = '';
|
||||
for (var i = 0; i < val.length; i++) {
|
||||
if (val[i] >= '0' && val[i] <= '9') {
|
||||
newVal += val[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (val != newVal) $(this).val(newVal);
|
||||
}
|
||||
}
|
||||
|
||||
changed = true;
|
||||
$('#save').button("enable");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// the function loadSettings has to exist ...
|
||||
function load(settings) {
|
||||
if (!settings) return;
|
||||
|
||||
changed = false;
|
||||
$('#save').button("disable");
|
||||
|
||||
devices = settings.devices || [];
|
||||
|
||||
for (var key in settings) {
|
||||
setValue(key, settings[key]);
|
||||
}
|
||||
}
|
||||
|
||||
// ... and the function save has to exist.
|
||||
// you have to make sure the callback is called with the settings object as first param!
|
||||
function save(callback) {
|
||||
callback(null);
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- you have to put your config page in a div with id adapter-container -->
|
||||
<div id="adapter-container">
|
||||
|
||||
<table><tr>
|
||||
<td><img src="mobile.png"></td>
|
||||
<td style="padding-top: 20px;padding-left: 10px"><h3 class="translate">mobile adapter settings</h3></td>
|
||||
</tr></table>
|
||||
|
||||
<div class="translate">There is nothing to setup</h4>
|
||||
</div>
|
||||
</html>
|
After Width: | Height: | Size: 5.6 KiB |
@ -0,0 +1,21 @@
|
||||
version: 'test-{build}'
|
||||
environment:
|
||||
matrix:
|
||||
- nodejs_version: '4'
|
||||
- nodejs_version: '8'
|
||||
- nodejs_version: '10'
|
||||
platform:
|
||||
- x86
|
||||
clone_folder: 'c:\projects\%APPVEYOR_PROJECT_NAME%'
|
||||
install:
|
||||
- ps: 'Install-Product node $env:nodejs_version $env:platform'
|
||||
- ps: '$NpmVersion = (npm -v).Substring(0,1)'
|
||||
- ps: 'if($NpmVersion -eq 5) { npm install -g npm@5 }'
|
||||
- ps: npm --version
|
||||
- npm install
|
||||
test_script:
|
||||
- echo %cd%
|
||||
- node --version
|
||||
- npm --version
|
||||
- npm test
|
||||
build: 'off'
|
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "yunkong2.mobile",
|
||||
"description": "jQuery Mobile based yunkong2 user interface",
|
||||
"version": "0.4.12",
|
||||
"author": {
|
||||
"name": "bluefox",
|
||||
"email": "dogafox@gmail.com"
|
||||
},
|
||||
"contributors": [
|
||||
"bluefox <dogafox@gmail.com>"
|
||||
],
|
||||
"homepage": "https://git.spacen.net/yunkong2/yunkong2.mobile",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.spacen.net/yunkong2/yunkong2.mobile"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "MIT",
|
||||
"url": "https://git.spacen.net/yunkong2/yunkong2.mobile/blob/master/LICENSE"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
"yunkong2",
|
||||
"GUI",
|
||||
"web interface",
|
||||
"home automation",
|
||||
"SCADA"
|
||||
],
|
||||
"devDependencies": {
|
||||
"grunt": "^1.0.1",
|
||||
"grunt-replace": "^1.0.1",
|
||||
"grunt-contrib-jshint": "^1.1.0",
|
||||
"grunt-jscs": "^3.0.1",
|
||||
"grunt-http": "^2.2.0",
|
||||
"mocha": "^4.1.0",
|
||||
"chai": "^4.1.2"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://git.spacen.net/yunkong2/yunkong2.mobile/issues"
|
||||
},
|
||||
"main": "widgets/hqwidgets.html",
|
||||
"scripts": {
|
||||
"test": "echo \"No test specified\" && exit 0"
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
var srcDir = __dirname + "/../";
|
||||
|
||||
module.exports = {
|
||||
all: {
|
||||
src: [
|
||||
srcDir + "*.js",
|
||||
srcDir + "lib/*.js",
|
||||
srcDir + "adapter/example/*.js",
|
||||
srcDir + "tasks/**/*.js",
|
||||
srcDir + "www/**/*.js",
|
||||
'!' + srcDir + "www/lib/**/*.js",
|
||||
'!' + srcDir + 'node_modules/**/*.js',
|
||||
'!' + srcDir + 'adapter/*/node_modules/**/*.js'
|
||||
],
|
||||
options: require('./jscsRules.js')
|
||||
}
|
||||
};
|
@ -0,0 +1,36 @@
|
||||
module.exports = {
|
||||
force: true,
|
||||
"requireCurlyBraces": ["else", "for", "while", "do", "try", "catch"], /*"if",*/
|
||||
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
|
||||
"requireSpaceBeforeBlockStatements": true,
|
||||
"requireParenthesesAroundIIFE": true,
|
||||
"disallowSpacesInFunctionDeclaration": {"beforeOpeningRoundBrace": true},
|
||||
"disallowSpacesInNamedFunctionExpression": {"beforeOpeningRoundBrace": true},
|
||||
"requireSpacesInFunctionExpression": {"beforeOpeningCurlyBrace": true},
|
||||
"requireSpacesInAnonymousFunctionExpression": {"beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true},
|
||||
"requireSpacesInNamedFunctionExpression": {"beforeOpeningCurlyBrace": true},
|
||||
"requireSpacesInFunctionDeclaration": {"beforeOpeningCurlyBrace": true},
|
||||
"disallowMultipleVarDecl": true,
|
||||
"requireBlocksOnNewline": true,
|
||||
"disallowEmptyBlocks": true,
|
||||
"disallowSpacesInsideObjectBrackets": true,
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
"disallowSpaceAfterObjectKeys": true,
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
//"requireAlignedObjectValues": "all",
|
||||
"requireOperatorBeforeLineBreak": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||
// "disallowLeftStickedOperators": ["?", "+", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||
// "requireRightStickedOperators": ["!"],
|
||||
// "requireSpaceAfterBinaryOperators": ["?", "+", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||
//"disallowSpaceAfterBinaryOperators": [","],
|
||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
||||
"requireSpaceAfterBinaryOperators": ["?", ">", ",", ">=", "<=", "<", "+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
||||
//"validateIndentation": 4,
|
||||
//"validateQuoteMarks": { "mark": "\"", "escape": true },
|
||||
"disallowMixedSpacesAndTabs": true,
|
||||
"disallowKeywordsOnNewLine": ["else", "catch"]
|
||||
|
||||
};
|
@ -0,0 +1,17 @@
|
||||
var srcDir = __dirname + "/../";
|
||||
|
||||
module.exports = {
|
||||
options: {
|
||||
force: true
|
||||
},
|
||||
all: [
|
||||
srcDir + "*.js",
|
||||
srcDir + "lib/*.js",
|
||||
srcDir + "adapter/example/*.js",
|
||||
srcDir + "tasks/**/*.js",
|
||||
srcDir + "www/**/*.js",
|
||||
'!' + srcDir + "www/lib/**/*.js",
|
||||
'!' + srcDir + 'node_modules/**/*.js',
|
||||
'!' + srcDir + 'adapter/*/node_modules/**/*.js'
|
||||
]
|
||||
};
|
@ -0,0 +1,91 @@
|
||||
/* jshint -W097 */
|
||||
/* jshint strict:false */
|
||||
/* jslint node: true */
|
||||
/* jshint expr: true */
|
||||
var expect = require('chai').expect;
|
||||
var fs = require('fs');
|
||||
|
||||
describe('Test package.json and io-package.json', function() {
|
||||
it('Test package files', function (done) {
|
||||
console.log();
|
||||
|
||||
var fileContentIOPackage = fs.readFileSync(__dirname + '/../io-package.json', 'utf8');
|
||||
var ioPackage = JSON.parse(fileContentIOPackage);
|
||||
|
||||
var fileContentNPMPackage = fs.readFileSync(__dirname + '/../package.json', 'utf8');
|
||||
var npmPackage = JSON.parse(fileContentNPMPackage);
|
||||
|
||||
expect(ioPackage).to.be.an('object');
|
||||
expect(npmPackage).to.be.an('object');
|
||||
|
||||
expect(ioPackage.common.version, 'ERROR: Version number in io-package.json needs to exist').to.exist;
|
||||
expect(npmPackage.version, 'ERROR: Version number in package.json needs to exist').to.exist;
|
||||
|
||||
expect(ioPackage.common.version, 'ERROR: Version numbers in package.json and io-package.json needs to match').to.be.equal(npmPackage.version);
|
||||
|
||||
if (!ioPackage.common.news || !ioPackage.common.news[ioPackage.common.version]) {
|
||||
console.log('WARNING: No news entry for current version exists in io-package.json, no rollback in Admin possible!');
|
||||
console.log();
|
||||
}
|
||||
|
||||
expect(npmPackage.author, 'ERROR: Author in package.json needs to exist').to.exist;
|
||||
expect(ioPackage.common.authors, 'ERROR: Authors in io-package.json needs to exist').to.exist;
|
||||
|
||||
if (ioPackage.common.name.indexOf('template') !== 0) {
|
||||
if (Array.isArray(ioPackage.common.authors)) {
|
||||
expect(ioPackage.common.authors.length, 'ERROR: Author in io-package.json needs to be set').to.not.be.equal(0);
|
||||
if (ioPackage.common.authors.length === 1) {
|
||||
expect(ioPackage.common.authors[0], 'ERROR: Author in io-package.json needs to be a real name').to.not.be.equal('my Name <my@email.com>');
|
||||
}
|
||||
}
|
||||
else {
|
||||
expect(ioPackage.common.authors, 'ERROR: Author in io-package.json needs to be a real name').to.not.be.equal('my Name <my@email.com>');
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log('WARNING: Testing for set authors field in io-package skipped because template adapter');
|
||||
console.log();
|
||||
}
|
||||
expect(fs.existsSync(__dirname + '/../README.md'), 'ERROR: README.md needs to exist! Please create one with description, detail information and changelog. English is mandatory.').to.be.true;
|
||||
if (!ioPackage.common.titleLang || typeof ioPackage.common.titleLang !== 'object') {
|
||||
console.log('WARNING: titleLang is not existing in io-package.json. Please add');
|
||||
console.log();
|
||||
}
|
||||
if (
|
||||
ioPackage.common.title.indexOf('yunkong2') !== -1 ||
|
||||
ioPackage.common.title.indexOf('yunkong2') !== -1 ||
|
||||
ioPackage.common.title.indexOf('adapter') !== -1 ||
|
||||
ioPackage.common.title.indexOf('Adapter') !== -1
|
||||
) {
|
||||
console.log('WARNING: title contains Adapter or yunkong2. It is clear anyway, that it is adapter for yunkong2.');
|
||||
console.log();
|
||||
}
|
||||
|
||||
if (ioPackage.common.name.indexOf('vis-') !== 0) {
|
||||
if (!ioPackage.common.materialize || !fs.existsSync(__dirname + '/../admin/index_m.html') || !fs.existsSync(__dirname + '/../gulpfile.js')) {
|
||||
console.log('WARNING: Admin3 support is missing! Please add it');
|
||||
console.log();
|
||||
}
|
||||
if (ioPackage.common.materialize) {
|
||||
expect(fs.existsSync(__dirname + '/../admin/index_m.html'), 'Admin3 support is enabled in io-package.json, but index_m.html is missing!').to.be.true;
|
||||
}
|
||||
}
|
||||
|
||||
var licenseFileExists = fs.existsSync(__dirname + '/../LICENSE');
|
||||
var fileContentReadme = fs.readFileSync(__dirname + '/../README.md', 'utf8');
|
||||
if (fileContentReadme.indexOf('## Changelog') === -1) {
|
||||
console.log('Warning: The README.md should have a section ## Changelog');
|
||||
console.log();
|
||||
}
|
||||
expect((licenseFileExists || fileContentReadme.indexOf('## License') !== -1), 'A LICENSE must exist as LICENSE file or as part of the README.md').to.be.true;
|
||||
if (!licenseFileExists) {
|
||||
console.log('Warning: The License should also exist as LICENSE file');
|
||||
console.log();
|
||||
}
|
||||
if (fileContentReadme.indexOf('## License') === -1) {
|
||||
console.log('Warning: The README.md should also have a section ## License to be shown in Admin3');
|
||||
console.log();
|
||||
}
|
||||
done();
|
||||
});
|
||||
});
|
@ -0,0 +1,11 @@
|
||||
CACHE MANIFEST
|
||||
|
||||
# yunkong2 mobile 0.4.10
|
||||
# dev 0
|
||||
|
||||
NETWORK:
|
||||
*
|
||||
|
||||
CACHE:
|
||||
|
||||
FALLBACK:
|
@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 450 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 891 B |
After Width: | Height: | Size: 670 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 6.1 KiB |
@ -0,0 +1,217 @@
|
||||
/*!
|
||||
* jQuery Mobile 1.4.5
|
||||
* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
|
||||
* http://jquerymobile.com
|
||||
*
|
||||
* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* Globals */
|
||||
/* Font
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
html {
|
||||
font-size: 100%;
|
||||
}
|
||||
body,
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
button,
|
||||
.ui-btn {
|
||||
font-size: 1em;
|
||||
line-height: 1.3;
|
||||
font-family: sans-serif /*{global-font-family}*/;
|
||||
}
|
||||
legend,
|
||||
.ui-input-text input,
|
||||
.ui-input-search input {
|
||||
color: inherit;
|
||||
text-shadow: inherit;
|
||||
}
|
||||
/* Form labels (overrides font-weight bold in bars, and mini font-size) */
|
||||
.ui-mobile label,
|
||||
div.ui-controlgroup-label {
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
}
|
||||
/* Separators
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
/* Field contain separator (< 28em) */
|
||||
.ui-field-contain {
|
||||
border-bottom-color: #828282;
|
||||
border-bottom-color: rgba(0,0,0,.15);
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
/* Table opt-in classes: strokes between each row, and alternating row stripes */
|
||||
/* Classes table-stroke and table-stripe are deprecated in 1.4. */
|
||||
.table-stroke thead th,
|
||||
.table-stripe thead th,
|
||||
.table-stripe tbody tr:last-child {
|
||||
border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
|
||||
border-bottom: 1px solid rgba(0,0,0,.1);
|
||||
}
|
||||
.table-stroke tbody th,
|
||||
.table-stroke tbody td {
|
||||
border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */
|
||||
border-bottom: 1px solid rgba(0,0,0,.05);
|
||||
}
|
||||
.table-stripe.table-stroke tbody tr:last-child th,
|
||||
.table-stripe.table-stroke tbody tr:last-child td {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.table-stripe tbody tr:nth-child(odd) td,
|
||||
.table-stripe tbody tr:nth-child(odd) th {
|
||||
background-color: #eeeeee; /* non-RGBA fallback */
|
||||
background-color: rgba(0,0,0,.04);
|
||||
}
|
||||
/* Buttons
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
.ui-btn,
|
||||
label.ui-btn {
|
||||
font-weight: bold;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-btn {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
.ui-btn-active {
|
||||
cursor: pointer;
|
||||
}
|
||||
/* Corner rounding
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
/* Class ui-btn-corner-all deprecated in 1.4 */
|
||||
.ui-corner-all {
|
||||
-webkit-border-radius: .6em /*{global-radii-blocks}*/;
|
||||
border-radius: .6em /*{global-radii-blocks}*/;
|
||||
}
|
||||
/* Buttons */
|
||||
.ui-btn-corner-all,
|
||||
.ui-btn.ui-corner-all,
|
||||
/* Slider track */
|
||||
.ui-slider-track.ui-corner-all,
|
||||
/* Flipswitch */
|
||||
.ui-flipswitch.ui-corner-all,
|
||||
/* Count bubble */
|
||||
.ui-li-count {
|
||||
-webkit-border-radius: .3125em /*{global-radii-buttons}*/;
|
||||
border-radius: .3125em /*{global-radii-buttons}*/;
|
||||
}
|
||||
/* Icon-only buttons */
|
||||
.ui-btn-icon-notext.ui-btn-corner-all,
|
||||
.ui-btn-icon-notext.ui-corner-all {
|
||||
-webkit-border-radius: 1em;
|
||||
border-radius: 1em;
|
||||
}
|
||||
/* Radius clip workaround for cleaning up corner trapping */
|
||||
.ui-btn-corner-all,
|
||||
.ui-corner-all {
|
||||
-webkit-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
/* Popup arrow */
|
||||
.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
|
||||
left: .6em /*{global-radii-blocks}*/;
|
||||
right: .6em /*{global-radii-blocks}*/;
|
||||
top: .6em /*{global-radii-blocks}*/;
|
||||
bottom: .6em /*{global-radii-blocks}*/;
|
||||
}
|
||||
/* Shadow
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
.ui-shadow {
|
||||
-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
}
|
||||
.ui-shadow-inset {
|
||||
-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
}
|
||||
.ui-overlay-shadow {
|
||||
-webkit-box-shadow: 0 0 12px rgba(0,0,0,.6);
|
||||
-moz-box-shadow: 0 0 12px rgba(0,0,0,.6);
|
||||
box-shadow: 0 0 12px rgba(0,0,0,.6);
|
||||
}
|
||||
/* Icons
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
.ui-btn-icon-left:after,
|
||||
.ui-btn-icon-right:after,
|
||||
.ui-btn-icon-top:after,
|
||||
.ui-btn-icon-bottom:after,
|
||||
.ui-btn-icon-notext:after {
|
||||
background-color: #666666 /*{global-icon-color}*/;
|
||||
background-color: rgba(0,0,0,.15) /*{global-icon-disc}*/;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-border-radius: 1em;
|
||||
border-radius: 1em;
|
||||
}
|
||||
/* Alt icons */
|
||||
.ui-alt-icon.ui-btn:after,
|
||||
.ui-alt-icon .ui-btn:after,
|
||||
html .ui-alt-icon.ui-checkbox-off:after,
|
||||
html .ui-alt-icon.ui-radio-off:after,
|
||||
html .ui-alt-icon .ui-checkbox-off:after,
|
||||
html .ui-alt-icon .ui-radio-off:after {
|
||||
background-color: #666666 /*{global-icon-color}*/;
|
||||
background-color: rgba(0,0,0,.15) /*{global-icon-disc}*/;
|
||||
}
|
||||
/* No disc */
|
||||
.ui-nodisc-icon.ui-btn:after,
|
||||
.ui-nodisc-icon .ui-btn:after {
|
||||
background-color: transparent;
|
||||
}
|
||||
/* Icon shadow */
|
||||
.ui-shadow-icon.ui-btn:after,
|
||||
.ui-shadow-icon .ui-btn:after {
|
||||
-webkit-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
|
||||
-moz-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
|
||||
box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
|
||||
}
|
||||
/* Checkbox and radio */
|
||||
.ui-btn.ui-checkbox-off:after,
|
||||
.ui-btn.ui-checkbox-on:after,
|
||||
.ui-btn.ui-radio-off:after,
|
||||
.ui-btn.ui-radio-on:after {
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin: -9px 2px 0 2px;
|
||||
}
|
||||
.ui-checkbox-off:after,
|
||||
.ui-btn.ui-radio-off:after {
|
||||
filter: Alpha(Opacity=30);
|
||||
opacity: .3;
|
||||
}
|
||||
.ui-btn.ui-checkbox-off:after,
|
||||
.ui-btn.ui-checkbox-on:after {
|
||||
-webkit-border-radius: .1875em;
|
||||
border-radius: .1875em;
|
||||
}
|
||||
.ui-btn.ui-checkbox-off:after {
|
||||
background-color: #666;
|
||||
background-color: rgba(0,0,0,.3);
|
||||
}
|
||||
.ui-radio .ui-btn.ui-radio-on:after {
|
||||
background-image: none;
|
||||
background-color: #fff;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-alt-icon.ui-btn.ui-radio-on:after,
|
||||
.ui-alt-icon .ui-btn.ui-radio-on:after {
|
||||
background-color: #000;
|
||||
}
|
||||
/* Loader */
|
||||
.ui-icon-loading {
|
||||
background: url("images/ajax-loader.gif");
|
||||
background-size: 2.875em 2.875em;
|
||||
}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#1d1d1d ;border-color:#1b1b1b ;color:#ffffff ;text-shadow:0 1px 0 #111111 ;font-weight:bold;}.ui-bar-a{border-width:1px;border-style:solid;}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#252525 ;border-color:#454545 ;color:#ffffff ;text-shadow:0 1px 0 #111111 ;}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#2a2a2a ;border-color:#1d1d1d ;color:#ffffff ;text-shadow:0 1px 0 #111111 ;}.ui-body-a{border-width:1px;border-style:solid;}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#22aadd ;font-weight:bold;}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{ color:#22aadd ;}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#0088bb ;}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#0088bb ;}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head + body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head + body .ui-btn.ui-btn-a:visited{background-color:#333333 ;border-color:#1f1f1f ;color:#ffffff ;text-shadow:0 1px 0 #111111 ;}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head + body .ui-btn.ui-btn-a:hover{background-color:#373737 ;border-color:#1f1f1f ;color:#ffffff ;text-shadow:0 1px 0 #111111 ;}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head + body .ui-btn.ui-btn-a:active{background-color:#404040 ;border-color:#1f1f1f ;color:#ffffff ;text-shadow:0 1px 0 #111111 ;}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head + body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#22aadd ;border-color:#125d79 ;color:#ffffff ;text-shadow:0 1px 0 #0088bb ;}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#22aadd ;}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head + body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head + body .ui-btn-a.ui-focus,html head + body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #22aadd ;-moz-box-shadow:0 0 12px #22aadd ;box-shadow:0 0 12px #22aadd ;}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default !important;pointer-events:none;}.ui-btn:focus,.ui-btn.ui-focus{outline:0;}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto;}
|
After Width: | Height: | Size: 6.1 KiB |
@ -0,0 +1,217 @@
|
||||
/*!
|
||||
* jQuery Mobile 1.4.5
|
||||
* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
|
||||
* http://jquerymobile.com
|
||||
*
|
||||
* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* Globals */
|
||||
/* Font
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
html {
|
||||
font-size: 100%;
|
||||
}
|
||||
body,
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
button,
|
||||
.ui-btn {
|
||||
font-size: 1em;
|
||||
line-height: 1.3;
|
||||
font-family: sans-serif /*{global-font-family}*/;
|
||||
}
|
||||
legend,
|
||||
.ui-input-text input,
|
||||
.ui-input-search input {
|
||||
color: inherit;
|
||||
text-shadow: inherit;
|
||||
}
|
||||
/* Form labels (overrides font-weight bold in bars, and mini font-size) */
|
||||
.ui-mobile label,
|
||||
div.ui-controlgroup-label {
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
}
|
||||
/* Separators
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
/* Field contain separator (< 28em) */
|
||||
.ui-field-contain {
|
||||
border-bottom-color: #828282;
|
||||
border-bottom-color: rgba(0,0,0,.15);
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
/* Table opt-in classes: strokes between each row, and alternating row stripes */
|
||||
/* Classes table-stroke and table-stripe are deprecated in 1.4. */
|
||||
.table-stroke thead th,
|
||||
.table-stripe thead th,
|
||||
.table-stripe tbody tr:last-child {
|
||||
border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
|
||||
border-bottom: 1px solid rgba(0,0,0,.1);
|
||||
}
|
||||
.table-stroke tbody th,
|
||||
.table-stroke tbody td {
|
||||
border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */
|
||||
border-bottom: 1px solid rgba(0,0,0,.05);
|
||||
}
|
||||
.table-stripe.table-stroke tbody tr:last-child th,
|
||||
.table-stripe.table-stroke tbody tr:last-child td {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.table-stripe tbody tr:nth-child(odd) td,
|
||||
.table-stripe tbody tr:nth-child(odd) th {
|
||||
background-color: #eeeeee; /* non-RGBA fallback */
|
||||
background-color: rgba(0,0,0,.04);
|
||||
}
|
||||
/* Buttons
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
.ui-btn,
|
||||
label.ui-btn {
|
||||
font-weight: bold;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-btn {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
.ui-btn-active {
|
||||
cursor: pointer;
|
||||
}
|
||||
/* Corner rounding
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
/* Class ui-btn-corner-all deprecated in 1.4 */
|
||||
.ui-corner-all {
|
||||
-webkit-border-radius: .6em /*{global-radii-blocks}*/;
|
||||
border-radius: .6em /*{global-radii-blocks}*/;
|
||||
}
|
||||
/* Buttons */
|
||||
.ui-btn-corner-all,
|
||||
.ui-btn.ui-corner-all,
|
||||
/* Slider track */
|
||||
.ui-slider-track.ui-corner-all,
|
||||
/* Flipswitch */
|
||||
.ui-flipswitch.ui-corner-all,
|
||||
/* Count bubble */
|
||||
.ui-li-count {
|
||||
-webkit-border-radius: .3125em /*{global-radii-buttons}*/;
|
||||
border-radius: .3125em /*{global-radii-buttons}*/;
|
||||
}
|
||||
/* Icon-only buttons */
|
||||
.ui-btn-icon-notext.ui-btn-corner-all,
|
||||
.ui-btn-icon-notext.ui-corner-all {
|
||||
-webkit-border-radius: 1em;
|
||||
border-radius: 1em;
|
||||
}
|
||||
/* Radius clip workaround for cleaning up corner trapping */
|
||||
.ui-btn-corner-all,
|
||||
.ui-corner-all {
|
||||
-webkit-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
/* Popup arrow */
|
||||
.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
|
||||
left: .6em /*{global-radii-blocks}*/;
|
||||
right: .6em /*{global-radii-blocks}*/;
|
||||
top: .6em /*{global-radii-blocks}*/;
|
||||
bottom: .6em /*{global-radii-blocks}*/;
|
||||
}
|
||||
/* Shadow
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
.ui-shadow {
|
||||
-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
}
|
||||
.ui-shadow-inset {
|
||||
-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
|
||||
}
|
||||
.ui-overlay-shadow {
|
||||
-webkit-box-shadow: 0 0 12px rgba(0,0,0,.6);
|
||||
-moz-box-shadow: 0 0 12px rgba(0,0,0,.6);
|
||||
box-shadow: 0 0 12px rgba(0,0,0,.6);
|
||||
}
|
||||
/* Icons
|
||||
-----------------------------------------------------------------------------------------------------------*/
|
||||
.ui-btn-icon-left:after,
|
||||
.ui-btn-icon-right:after,
|
||||
.ui-btn-icon-top:after,
|
||||
.ui-btn-icon-bottom:after,
|
||||
.ui-btn-icon-notext:after {
|
||||
background-color: #666666 /*{global-icon-color}*/;
|
||||
background-color: rgba(0,0,0,.15) /*{global-icon-disc}*/;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-border-radius: 1em;
|
||||
border-radius: 1em;
|
||||
}
|
||||
/* Alt icons */
|
||||
.ui-alt-icon.ui-btn:after,
|
||||
.ui-alt-icon .ui-btn:after,
|
||||
html .ui-alt-icon.ui-checkbox-off:after,
|
||||
html .ui-alt-icon.ui-radio-off:after,
|
||||
html .ui-alt-icon .ui-checkbox-off:after,
|
||||
html .ui-alt-icon .ui-radio-off:after {
|
||||
background-color: #666666 /*{global-icon-color}*/;
|
||||
background-color: rgba(0,0,0,.15) /*{global-icon-disc}*/;
|
||||
}
|
||||
/* No disc */
|
||||
.ui-nodisc-icon.ui-btn:after,
|
||||
.ui-nodisc-icon .ui-btn:after {
|
||||
background-color: transparent;
|
||||
}
|
||||
/* Icon shadow */
|
||||
.ui-shadow-icon.ui-btn:after,
|
||||
.ui-shadow-icon .ui-btn:after {
|
||||
-webkit-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
|
||||
-moz-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
|
||||
box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
|
||||
}
|
||||
/* Checkbox and radio */
|
||||
.ui-btn.ui-checkbox-off:after,
|
||||
.ui-btn.ui-checkbox-on:after,
|
||||
.ui-btn.ui-radio-off:after,
|
||||
.ui-btn.ui-radio-on:after {
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin: -9px 2px 0 2px;
|
||||
}
|
||||
.ui-checkbox-off:after,
|
||||
.ui-btn.ui-radio-off:after {
|
||||
filter: Alpha(Opacity=30);
|
||||
opacity: .3;
|
||||
}
|
||||
.ui-btn.ui-checkbox-off:after,
|
||||
.ui-btn.ui-checkbox-on:after {
|
||||
-webkit-border-radius: .1875em;
|
||||
border-radius: .1875em;
|
||||
}
|
||||
.ui-btn.ui-checkbox-off:after {
|
||||
background-color: #666;
|
||||
background-color: rgba(0,0,0,.3);
|
||||
}
|
||||
.ui-radio .ui-btn.ui-radio-on:after {
|
||||
background-image: none;
|
||||
background-color: #fff;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-alt-icon.ui-btn.ui-radio-on:after,
|
||||
.ui-alt-icon .ui-btn.ui-radio-on:after {
|
||||
background-color: #000;
|
||||
}
|
||||
/* Loader */
|
||||
.ui-icon-loading {
|
||||
background: url("images/ajax-loader.gif");
|
||||
background-size: 2.875em 2.875em;
|
||||
}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#cccccc ;border-color:#707070 ;color:#000000 ;text-shadow:0 1px 0 #eeeeee ;font-weight:bold;}.ui-bar-a{border-width:1px;border-style:solid;}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#808080 ;border-color:#808080 ;color:#ffffff ;text-shadow:0 1px 0 #444444 ;}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#4d4d4d ;border-color:#6b6b6b ;color:#ffffff ;text-shadow:0 1px 0 #444444 ;}.ui-body-a{border-width:1px;border-style:solid;}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#3388cc ;font-weight:bold;}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{ color:#3388cc ;}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#005599 ;}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#005599 ;}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head + body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head + body .ui-btn.ui-btn-a:visited{background-color:#f6f6f6 ;border-color:#dddddd ;color:#333333 ;text-shadow:0 1px 0 #f3f3f3 ;}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head + body .ui-btn.ui-btn-a:hover{background-color:#ededed ;border-color:#dddddd ;color:#333333 ;text-shadow:0 1px 0 #f3f3f3 ;}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head + body .ui-btn.ui-btn-a:active{background-color:#e8e8e8 ;border-color:#dddddd ;color:#333333 ;text-shadow:0 1px 0 #f3f3f3 ;}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head + body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#cccccc ;border-color:#707070 ;color:#000000 ;text-shadow:0 1px 0 #eeeeee ;}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#cccccc ;}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head + body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head + body .ui-btn-a.ui-focus,html head + body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #cccccc ;-moz-box-shadow:0 0 12px #cccccc ;box-shadow:0 0 12px #cccccc ;}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default !important;pointer-events:none;}.ui-btn:focus,.ui-btn.ui-focus{outline:0;}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto;}
|
@ -0,0 +1,2 @@
|
||||
// // Copyright (c) 2012 Florian H., https://git.spacen.net/js-coder https://git.spacen.net/js-coder/lostorage.js
|
||||
!function(e,t){var n={isArray:Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"},isPlainObj:function(e){return e===Object(e)},toArray:function(e){return Array.prototype.slice.call(e)},prepareArgs:function(e,t){return e=n.toArray(e),e.unshift(t),e},getObjKeyByValue:function(e,t){for(var n in e)if(e.hasOwnProperty(n)&&e[n]===t)return n},prepareReturn:function(t){return e[n.getObjKeyByValue(o,t)]},retrieve:function(e,n){return e==t?n:e},serialize:function(e){return JSON.stringify(e)},unserialize:function(e){return e==t?t:JSON.parse(e)}},r=function(){return r.get.apply(this,arguments)},i={storage:function(){return storage.get.apply(storage,arguments)},session:function(){return session.get.apply(session,arguments)}};r.set=function(e,t,r){if(n.isPlainObj(t))for(var i in t)t.hasOwnProperty(i)&&e.setItem(i,n.serialize(t[i]));else e.setItem(t,n.serialize(r));return n.prepareReturn(e)},r.invert=function(e,t){return this.set(e,t,!this.get(e,t))},r.add=function(e,t,n){return this.set(e,t,this.get(e,t)+parseInt(n,10))},r.increase=function(e,t,r){return this.add(e,t,n.retrieve(r,1))},r.decrease=function(e,t,r){return this.add(e,t,-n.retrieve(r,1))},r.concat=function(e,t,n){return this.set(e,t,this.get(e,t)+n)},r.push=function(e,t,r){var i=n.toArray(arguments),s=this.get(e,t,[]);return i.splice(0,2),s.push.apply(s,i),this.set(e,t,s)},r.extend=function(e,t,r,i){var s=this.get(e,t,{});if(n.isPlainObj(r))for(var o in r)r.hasOwnProperty(o)&&(s[o]=r[o]);else s[r]=i;return this.set(e,t,s)},r.remove=function(e,t){t=n.isArray(t)?t:n.toArray(arguments);for(var r=0,i=t.length;r<i;r++)delete e[t[r]];return n.prepareReturn(e)},r.empty=function(e){return e.clear(),n.prepareReturn(e)},r.get=function(e,r,i){i=i||t;if(n.isArray(r)){var s={};for(var o=0,u=r.length;o<u;o++){var a=r[o];s[a]=this.get(e,a,i)}return s}return n.retrieve(n.unserialize(e.getItem(r)),i)},r.all=function(e){var t={};for(var r=0,i=e.length;r<i;r++){var s=e.key(r);t[s]=n.unserialize(e.getItem(s))}return t};var s="set invert add increase decrease concat push extend remove empty get all".split(" "),o={storage:localStorage,session:sessionStorage};for(var u=0,a=s.length;u<a;u++){var f=s[u];for(var l in o){if(!o.hasOwnProperty(l))continue;var c=o[l];i[l][f]=function(e,t){return function(){var i=n.prepareArgs(arguments,t);return r[e].apply(r,i)}}(f,c)}}var h={storage:i.storage,session:i.session};typeof define=="function"&&define.amd?define(function(){return h}):typeof exports!="undefined"?module.exports=h:(e.storage=i.storage,e.session=i.session)}(window);
|
@ -0,0 +1,12 @@
|
||||
<!doctype html>
|
||||
<html manifest="cache.manifest" lang="de" xmlns="http://www.w3.org/1999/html">
|
||||
<head>
|
||||
<link rel="stylesheet" href="../lib/css/jquery.mobile-1.3.2.min.css" />
|
||||
</head>
|
||||
<body style="background-color: #0092d9; padding:30px; font-size: 16px; font-weight: bold; font-family: Helvetica,Arial,sans-serif;">
|
||||
<div style="width: 320px; margin-left:-160px; position: absolute; left: 50%">
|
||||
<p>Keine Verbindung zum Server</p>
|
||||
<a class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-left ui-btn-up-b" href="./" target="_self" ><span class="ui-btn-inner"><span class="ui-btn-text">Neu laden</span><span class="ui-icon ui-icon-refresh ui-icon-shadow"> </span></span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|