commit
d7a0c99984
@ -0,0 +1,27 @@
|
||||
import time
|
||||
import json
|
||||
|
||||
if __name__ == '__main__':
|
||||
while True:
|
||||
cardID = raw_input("Enter card ID: ")
|
||||
event = {}
|
||||
event["time"] = time.time()
|
||||
event["cardID"] = cardID
|
||||
event["name"] = ''
|
||||
try:
|
||||
with open('cards/' + cardID + '.json') as card_data:
|
||||
data = json.load(card_data)
|
||||
event["name"] = data['name']
|
||||
except:
|
||||
print "Card not registered."
|
||||
history = []
|
||||
try:
|
||||
with open('history.json', 'r') as json_data:
|
||||
history = json.load(json_data)
|
||||
except:
|
||||
print 'Initializing new history file.'
|
||||
finally:
|
||||
history.append(event)
|
||||
with open('history.json', 'w') as outfile:
|
||||
json.dump(history, outfile)
|
||||
|
@ -0,0 +1 @@
|
||||
{"name": "Davide Bon", "secretTools": true, "fridge": false}
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"folders":
|
||||
[
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,520 @@
|
||||
{
|
||||
"auto_complete":
|
||||
{
|
||||
"selected_items":
|
||||
[
|
||||
[
|
||||
"ROS",
|
||||
"ROS_INFO"
|
||||
],
|
||||
[
|
||||
"uar",
|
||||
"uarmClient"
|
||||
],
|
||||
[
|
||||
"y",
|
||||
"y"
|
||||
],
|
||||
[
|
||||
"uarm",
|
||||
"uarmClient"
|
||||
],
|
||||
[
|
||||
"obj",
|
||||
"objectPose"
|
||||
],
|
||||
[
|
||||
"gra",
|
||||
"grabObjectCallback"
|
||||
],
|
||||
[
|
||||
"x",
|
||||
"x_mean"
|
||||
],
|
||||
[
|
||||
"upp",
|
||||
"UpperV"
|
||||
],
|
||||
[
|
||||
"v",
|
||||
"V"
|
||||
],
|
||||
[
|
||||
"lo",
|
||||
"LowerV"
|
||||
],
|
||||
[
|
||||
"up",
|
||||
"UpperH"
|
||||
],
|
||||
[
|
||||
"lower",
|
||||
"LowerH"
|
||||
],
|
||||
[
|
||||
"Cm",
|
||||
"Cmax"
|
||||
],
|
||||
[
|
||||
"dep",
|
||||
"depth_registered"
|
||||
],
|
||||
[
|
||||
"pcl",
|
||||
"pclDepthRegistered"
|
||||
],
|
||||
[
|
||||
"z",
|
||||
"z_mean"
|
||||
],
|
||||
[
|
||||
"dept",
|
||||
"depthImage"
|
||||
],
|
||||
[
|
||||
"CvIma",
|
||||
"CvImagePtr"
|
||||
],
|
||||
[
|
||||
"wh",
|
||||
"white_pixels"
|
||||
],
|
||||
[
|
||||
"mea",
|
||||
"y_mean"
|
||||
],
|
||||
[
|
||||
"cv",
|
||||
"cv_ptr"
|
||||
],
|
||||
[
|
||||
"dpe",
|
||||
"depth_data"
|
||||
],
|
||||
[
|
||||
"Image",
|
||||
"ImageConstPtr"
|
||||
],
|
||||
[
|
||||
"depth",
|
||||
"depthDataCallback"
|
||||
],
|
||||
[
|
||||
"sub",
|
||||
"subscribe"
|
||||
],
|
||||
[
|
||||
"image",
|
||||
"image_transport"
|
||||
],
|
||||
[
|
||||
"hi",
|
||||
"history_out"
|
||||
],
|
||||
[
|
||||
"histor",
|
||||
"history_in"
|
||||
],
|
||||
[
|
||||
"histo",
|
||||
"history_in"
|
||||
],
|
||||
[
|
||||
"w",
|
||||
"w1_int_error"
|
||||
],
|
||||
[
|
||||
"es",
|
||||
"estimated_w2"
|
||||
],
|
||||
[
|
||||
"des",
|
||||
"desired_w2"
|
||||
],
|
||||
[
|
||||
"time",
|
||||
"timeString"
|
||||
],
|
||||
[
|
||||
"card",
|
||||
"cardID"
|
||||
],
|
||||
[
|
||||
"ove",
|
||||
"overlay_out"
|
||||
],
|
||||
[
|
||||
"pos",
|
||||
"position"
|
||||
],
|
||||
[
|
||||
"pad",
|
||||
"padding-left"
|
||||
],
|
||||
[
|
||||
"font",
|
||||
"font-size"
|
||||
],
|
||||
[
|
||||
"ca",
|
||||
"card-id"
|
||||
],
|
||||
[
|
||||
"fun",
|
||||
"function"
|
||||
],
|
||||
[
|
||||
"se",
|
||||
"send_from_directory"
|
||||
],
|
||||
[
|
||||
"fn",
|
||||
"function"
|
||||
],
|
||||
[
|
||||
"fu",
|
||||
"function"
|
||||
],
|
||||
[
|
||||
"bak",
|
||||
"background-color"
|
||||
],
|
||||
[
|
||||
"poi",
|
||||
"position"
|
||||
],
|
||||
[
|
||||
"di",
|
||||
"display"
|
||||
],
|
||||
[
|
||||
"p",
|
||||
"position"
|
||||
],
|
||||
[
|
||||
"ta",
|
||||
"ta-c\ttext-align: center;"
|
||||
],
|
||||
[
|
||||
"fon",
|
||||
"font-size"
|
||||
],
|
||||
[
|
||||
"inl",
|
||||
"inline-block"
|
||||
],
|
||||
[
|
||||
"back",
|
||||
"background-color"
|
||||
],
|
||||
[
|
||||
"wid",
|
||||
"width"
|
||||
],
|
||||
[
|
||||
"tran",
|
||||
"transition"
|
||||
],
|
||||
[
|
||||
"in",
|
||||
"inline-block"
|
||||
],
|
||||
[
|
||||
"json",
|
||||
"json_data"
|
||||
],
|
||||
[
|
||||
"en",
|
||||
"event"
|
||||
],
|
||||
[
|
||||
"if",
|
||||
"ifmain\tif __name__ == '__main__'"
|
||||
],
|
||||
[
|
||||
"d",
|
||||
"d_theta_left"
|
||||
],
|
||||
[
|
||||
"a",
|
||||
"angular"
|
||||
],
|
||||
[
|
||||
"d_",
|
||||
"d_theta_right"
|
||||
],
|
||||
[
|
||||
"coun",
|
||||
"count_change_right"
|
||||
],
|
||||
[
|
||||
"cou",
|
||||
"count_change"
|
||||
],
|
||||
[
|
||||
"cot",
|
||||
"count_change_right"
|
||||
],
|
||||
[
|
||||
"count",
|
||||
"count_change_left"
|
||||
],
|
||||
[
|
||||
"left",
|
||||
"leftEncoderCallback"
|
||||
],
|
||||
[
|
||||
"ar",
|
||||
"argv"
|
||||
],
|
||||
[
|
||||
"arg",
|
||||
"argc"
|
||||
]
|
||||
]
|
||||
},
|
||||
"buffers":
|
||||
[
|
||||
],
|
||||
"build_system": "",
|
||||
"build_system_choices":
|
||||
[
|
||||
],
|
||||
"build_varint": "",
|
||||
"command_palette":
|
||||
{
|
||||
"height": 368.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
[
|
||||
"prv",
|
||||
"PackageResourceViewer: Open Resource"
|
||||
],
|
||||
[
|
||||
"syntak",
|
||||
"Set Syntax: CMake"
|
||||
],
|
||||
[
|
||||
"pcip",
|
||||
"Package Control: Install Package"
|
||||
],
|
||||
[
|
||||
"rei",
|
||||
"Indentation: Reindent Lines"
|
||||
],
|
||||
[
|
||||
"rein",
|
||||
"Indentation: Reindent Lines"
|
||||
]
|
||||
],
|
||||
"width": 453.0
|
||||
},
|
||||
"console":
|
||||
{
|
||||
"height": 188.0,
|
||||
"history":
|
||||
[
|
||||
"import urllib.request,os,hashlib; h = '261dd1222b4693ce6d4f85f9c827ac06' + '6d5ab8ebdd020086947172a8a1356bb6'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)"
|
||||
]
|
||||
},
|
||||
"distraction_free":
|
||||
{
|
||||
"menu_visible": true,
|
||||
"show_minimap": false,
|
||||
"show_open_files": false,
|
||||
"show_tabs": false,
|
||||
"side_bar_visible": false,
|
||||
"status_bar_visible": false
|
||||
},
|
||||
"expanded_folders":
|
||||
[
|
||||
"/home/davide/fridge_lock"
|
||||
],
|
||||
"file_history":
|
||||
[
|
||||
"/home/davide/catkin_ws/src/sftp-config.json",
|
||||
"/home/davide/catkin_ws/src/ras_uarm_controller/src/uarm_controller.cpp",
|
||||
"/home/davide/catkin_ws/src/ras_uarm_controller/CMakeLists.txt",
|
||||
"/home/davide/catkin_ws/src/ras_color_detection/CMakeLists.txt",
|
||||
"/home/davide/.config/sublime-text-3/Packages/CMake/CMake.tmLanguage",
|
||||
"/home/davide/.config/sublime-text-3/Packages/C++/C++.sublime-syntax",
|
||||
"/home/davide/.config/sublime-text-3/Packages/C++/C++.sublime-settings",
|
||||
"/home/davide/.config/sublime-text-3/Packages/C++/Comments (C++).tmPreferences",
|
||||
"/tmp/fz3temp-1/uarm_controller.cpp",
|
||||
"/home/davide/catkin_ws/src/ras_color_detection/src/color_detection_node.cpp",
|
||||
"/tmp/fz3temp-1/color_detection_node.cpp",
|
||||
"/home/davide/fridge_lock/static/style.css",
|
||||
"/home/davide/fridge_lock/static/script.js",
|
||||
"/home/davide/fridge_lock/server.py",
|
||||
"/home/davide/fridge_lock/history.json",
|
||||
"/home/davide/fridge_lock/cards/2924385363.json",
|
||||
"/home/davide/fridge_lock/cards/0967437296.json",
|
||||
"/home/davide/.config/sublime-text-3/Packages/User/Preferences.sublime-settings",
|
||||
"/tmp/fz3temp-1/milestone1.launch",
|
||||
"/tmp/fz3temp-1/motor_controller.cpp",
|
||||
"/tmp/fz3temp-1/ras_odometry_node.cpp",
|
||||
"/home/davide/fridge_lock/templates/status.html",
|
||||
"/home/davide/fridge_lock/static/colors",
|
||||
"/home/davide/fridge_lock/cards/1993135003.json",
|
||||
"/home/davide/fridge_lock/cards/13245678.json",
|
||||
"/home/davide/fridge_lock/cardlistener.py",
|
||||
"/home/davide/fridge_lock/templates/some.html",
|
||||
"/home/davide/catkin_ws/src/ras_odometry/package.xml",
|
||||
"/home/davide/catkin_ws/src/ras_odometry/CMakeLists.txt",
|
||||
"/home/davide/catkin_ws/src/ras_odometry/src/odometry.cpp",
|
||||
"/home/davide/solar_music/main.c",
|
||||
"/home/davide/solar_music/makefile",
|
||||
"/home/davide/crap.json",
|
||||
"/home/davide/script.py"
|
||||
],
|
||||
"find":
|
||||
{
|
||||
"height": 41.0
|
||||
},
|
||||
"find_in_files":
|
||||
{
|
||||
"height": 0.0,
|
||||
"where_history":
|
||||
[
|
||||
]
|
||||
},
|
||||
"find_state":
|
||||
{
|
||||
"case_sensitive": false,
|
||||
"find_history":
|
||||
[
|
||||
"toPos",
|
||||
"moveTo",
|
||||
"cv_ptr",
|
||||
"Image",
|
||||
"cv_ptr",
|
||||
"tm_hour",
|
||||
"odometry",
|
||||
"talker",
|
||||
"angular"
|
||||
],
|
||||
"highlight": true,
|
||||
"in_selection": false,
|
||||
"preserve_case": false,
|
||||
"regex": false,
|
||||
"replace_history":
|
||||
[
|
||||
],
|
||||
"reverse": false,
|
||||
"show_context": true,
|
||||
"use_buffer2": true,
|
||||
"whole_word": false,
|
||||
"wrap": true
|
||||
},
|
||||
"groups":
|
||||
[
|
||||
{
|
||||
"sheets":
|
||||
[
|
||||
]
|
||||
}
|
||||
],
|
||||
"incremental_find":
|
||||
{
|
||||
"height": 25.0
|
||||
},
|
||||
"input":
|
||||
{
|
||||
"height": 37.0
|
||||
},
|
||||
"layout":
|
||||
{
|
||||
"cells":
|
||||
[
|
||||
[
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1
|
||||
]
|
||||
],
|
||||
"cols":
|
||||
[
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"rows":
|
||||
[
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"menu_visible": true,
|
||||
"output.find_results":
|
||||
{
|
||||
"height": 0.0
|
||||
},
|
||||
"output.sftp":
|
||||
{
|
||||
"height": 0.0
|
||||
},
|
||||
"pinned_build_system": "",
|
||||
"project": "fridge_lock.sublime-project",
|
||||
"replace":
|
||||
{
|
||||
"height": 46.0
|
||||
},
|
||||
"save_all_on_build": true,
|
||||
"select_file":
|
||||
{
|
||||
"height": 0.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
[
|
||||
"uarm",
|
||||
"ras_uarm_controller/src/uarm_controller.cpp"
|
||||
],
|
||||
[
|
||||
"ua",
|
||||
"ras_uarm_controller/CMakeLists.txt"
|
||||
],
|
||||
[
|
||||
"color",
|
||||
"ras_color_detection/CMakeLists.txt"
|
||||
]
|
||||
],
|
||||
"width": 0.0
|
||||
},
|
||||
"select_project":
|
||||
{
|
||||
"height": 500.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
[
|
||||
"",
|
||||
"~/catkin_ws/src/harold.sublime-project"
|
||||
]
|
||||
],
|
||||
"width": 380.0
|
||||
},
|
||||
"select_symbol":
|
||||
{
|
||||
"height": 0.0,
|
||||
"last_filter": "",
|
||||
"selected_items":
|
||||
[
|
||||
],
|
||||
"width": 0.0
|
||||
},
|
||||
"selected_group": 0,
|
||||
"settings":
|
||||
{
|
||||
},
|
||||
"show_minimap": true,
|
||||
"show_open_files": false,
|
||||
"show_tabs": true,
|
||||
"side_bar_visible": true,
|
||||
"side_bar_width": 218.0,
|
||||
"status_bar_visible": true,
|
||||
"template_settings":
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
[
|
||||
{
|
||||
"time": 1475424208.055737,
|
||||
"name": "Davide Bon",
|
||||
"cardID": "2924385363"
|
||||
},
|
||||
{
|
||||
"cardID": "0861643457",
|
||||
"name": "",
|
||||
"time": 1475424209.151567},
|
||||
{
|
||||
"time": 1475424209.758858,
|
||||
"name": "Davide Bon",
|
||||
"cardID": "2924385363"
|
||||
},
|
||||
{
|
||||
"cardID": "2924385363",
|
||||
"name": "Davide Bon",
|
||||
"time": 1475424211.022202
|
||||
},
|
||||
{
|
||||
"time": 1475424212.244935,
|
||||
"name": "",
|
||||
"cardID": "0861643457"
|
||||
},
|
||||
{
|
||||
"cardID": "0861643457",
|
||||
"name": "",
|
||||
"time": 1475424213.343284
|
||||
}
|
||||
]
|
@ -0,0 +1,72 @@
|
||||
from flask import Flask
|
||||
from flask import render_template, send_from_directory
|
||||
import json, time
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return '{"onFire": false}'
|
||||
|
||||
@app.route('/status')
|
||||
def somehtml():
|
||||
history = []
|
||||
with open('history.json', 'r') as json_data:
|
||||
history = json.load(json_data)
|
||||
history = history[-15:]
|
||||
for event in history:
|
||||
event['time'] = epochFormat(event['time'])
|
||||
return render_template('status.html', events = history[::-1])
|
||||
|
||||
@app.route('/getcardinfo/<cardID>')
|
||||
def getCardInfo(cardID):
|
||||
return send_from_directory('cards', cardID + '.json')
|
||||
|
||||
|
||||
@app.route('/addcard/<cardID>/<name>/<authCode>')
|
||||
def addCard(cardID, name, authCode):
|
||||
authCode = int(authCode)
|
||||
data = {}
|
||||
data["name"] = name
|
||||
if authCode == 0:
|
||||
data["fridge"] = False
|
||||
data["secretTools"] = False
|
||||
elif authCode == 1:
|
||||
data["fridge"] = True
|
||||
data["secretTools"] = False
|
||||
elif authCode == 2:
|
||||
data["fridge"] = False
|
||||
data["secretTools"] = True
|
||||
elif authCode == 3:
|
||||
data["fridge"] = True
|
||||
data["secretTools"] = True
|
||||
else:
|
||||
return '{"status" : "error_unknownAuthCode"}'
|
||||
|
||||
with open('cards/' + cardID + '.json', 'w') as outfile:
|
||||
json.dump(data, outfile)
|
||||
|
||||
history = []
|
||||
with open('history.json', 'r') as history_in:
|
||||
history = json.load(history_in)
|
||||
for event in history:
|
||||
if event["cardID"] == cardID:
|
||||
event["name"] = name
|
||||
with open('history.json', 'w') as history_out:
|
||||
json.dump(history, history_out)
|
||||
|
||||
return '{"status": "ok"}'
|
||||
|
||||
def epochFormat(timestamp):
|
||||
timeObject = time.localtime(timestamp)
|
||||
timeString = str(timeObject.tm_year) + '/' + str(timeObject.tm_mon) + '/' + str(timeObject.tm_mday) + ' - '
|
||||
if timeObject.tm_hour < 10:
|
||||
timeString = timeString + '0'
|
||||
timeString = timeString + str(timeObject.tm_hour) + ":"
|
||||
if timeObject.tm_min < 10:
|
||||
timeString = timeString + '0'
|
||||
timeString = timeString + str(timeObject.tm_min) + ":"
|
||||
if timeObject.tm_sec < 10:
|
||||
timeString = timeString + '0'
|
||||
timeString = timeString + str(timeObject.tm_sec)
|
||||
|
||||
return timeString
|
Binary file not shown.
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
export FLASK_APP=server.py
|
||||
loc=false
|
||||
noh=false
|
||||
while getopts "ln" opt; do
|
||||
case $opt in
|
||||
l) loc=true ;;
|
||||
n) noh=true ;;
|
||||
\?) echo "Invalid argument" ;;
|
||||
esac
|
||||
done
|
||||
if $aflag; then
|
||||
if $noh; then
|
||||
nohup flask run&
|
||||
else
|
||||
flask run
|
||||
fi
|
||||
else
|
||||
if $noh; then
|
||||
nohup flask run --host=0.0.0.0&
|
||||
else
|
||||
flask run -host=0.0.0.0
|
||||
fi
|
||||
fi
|
@ -0,0 +1,5 @@
|
||||
lightest D7E2E2
|
||||
light 5E9292
|
||||
middle 226666
|
||||
dark 013A3A
|
||||
darkest 000F0F
|
@ -0,0 +1,53 @@
|
||||
function overlay_in() {
|
||||
$('.shadow').css({'display' : 'block'});
|
||||
$('.overlay').css({'display' : 'block'});
|
||||
$('.shadow').animate({'opacity' : 0.7});
|
||||
$('.overlay').animate({'top' : '10%'});
|
||||
}
|
||||
|
||||
function overlay_out() {
|
||||
$('.shadow').animate({'opacity' : 0.0}, function () {
|
||||
$('.overlay').css({'display' : 'none'});
|
||||
});
|
||||
$('.overlay').animate({'top' : '-70%'}, function () {
|
||||
$('.shadow').css({'display' : 'none'});
|
||||
});
|
||||
}
|
||||
|
||||
function save() {
|
||||
var name = $('#name').val();
|
||||
var cardID = $('.card-id').text();
|
||||
var authCode = 0;
|
||||
if ($('#fridge').is(':checked'))
|
||||
authCode += 1;
|
||||
if ($('#tools').is(':checked'))
|
||||
authCode += 2;
|
||||
$.getJSON('http://127.0.0.1:5000/addcard/' + cardID + '/' + name + '/' + authCode, function(data) {
|
||||
|
||||
});
|
||||
overlay_out();
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$('.event').click(function() {
|
||||
var cardID = $(this).attr('card-id')
|
||||
$('.card-id').text(cardID);
|
||||
$.getJSON('http://127.0.0.1:5000/getcardinfo/' + cardID, function(data) {
|
||||
$('#name').val(data.name);
|
||||
if (data.fridge)
|
||||
$('#fridge').prop('checked', true);
|
||||
else
|
||||
$('#fridge').prop('checked', false);
|
||||
if (data.secretTools)
|
||||
$('#tools').prop('checked', true);
|
||||
else
|
||||
$('#tools').prop('checked', false);
|
||||
})
|
||||
.fail(function() {
|
||||
$('#name').val('');
|
||||
$('#fridge').prop('checked', false);
|
||||
$('#tools').prop('checked', false);
|
||||
});
|
||||
overlay_in();
|
||||
})
|
||||
})
|
@ -0,0 +1,138 @@
|
||||
html {
|
||||
background: #D7E2E2;
|
||||
font-family: 'Roboto';
|
||||
color: #000F0F;
|
||||
}
|
||||
|
||||
.recent {
|
||||
display: inline-block;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.event {
|
||||
font-size: 12pt;
|
||||
padding: 0 6pt 0 6pt;
|
||||
transition: 0.4s;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.event:hover {
|
||||
background: #226666;
|
||||
width: 105%;
|
||||
}
|
||||
|
||||
.time {
|
||||
padding: 6pt 0 6pt 0;
|
||||
display: inline-block;
|
||||
width: 49%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.name {
|
||||
padding: 6pt 0 6pt 0;
|
||||
display: inline-block;
|
||||
width: 49%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.unknown_card {
|
||||
color: #E26B08;
|
||||
}
|
||||
|
||||
.everything-else {
|
||||
display: inline-block;
|
||||
width: 69%;
|
||||
left: 30%;
|
||||
top: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.button {
|
||||
width: 50%;
|
||||
background-color: #013A3A;
|
||||
color: #5E9292;
|
||||
padding: 6pt;
|
||||
text-align: center;
|
||||
font-size: 16pt;
|
||||
margin: 16pt 0 16pt 0;
|
||||
}
|
||||
|
||||
.separator {
|
||||
height: 10%;
|
||||
}
|
||||
|
||||
.vertical-separator {
|
||||
height: 100%;
|
||||
width: 1px;
|
||||
background-color: #5E9292;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 35%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.shadow {
|
||||
background-color: black;
|
||||
display: none;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
opacity: 0.0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
z-index: 200;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
background-color: #226666;
|
||||
color: #D7E2E2;
|
||||
display: none;
|
||||
height: 60%;
|
||||
left: 35%;
|
||||
padding: 8pt;
|
||||
position: absolute;
|
||||
top: -70%;
|
||||
width: 30%;
|
||||
z-index: 201;
|
||||
}
|
||||
|
||||
.card-id {
|
||||
font-weight: 300;
|
||||
text-align: center;
|
||||
padding: 8pt;
|
||||
font-size: 24pt;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
font-size: 16pt;
|
||||
margin: 12pt 6pt 12pt 6pt;
|
||||
padding: 5pt 8pt 5pt 8pt;
|
||||
}
|
||||
|
||||
.button {
|
||||
background-color: #013A3A;
|
||||
color: #5E9292;
|
||||
border: none;
|
||||
text-align: center;
|
||||
font-size: 10pt;
|
||||
width: 45%;
|
||||
margin: 8pt;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#save {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#cancel {
|
||||
left: 0;
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Card access manager</title>
|
||||
<link rel="stylesheet" type="text/css" href="static/style.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400" rel="stylesheet">
|
||||
<script
|
||||
src="http://code.jquery.com/jquery-3.1.1.js"
|
||||
integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA="
|
||||
crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" src="static/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="recent">
|
||||
{% for event in events %}
|
||||
<div class="event" card-id="{{event.cardID}}">
|
||||
<div class="time">{{event.time}}</div>
|
||||
<div class="name">
|
||||
{% if event.name == "" %}
|
||||
<span class="unknown_card">{{event.cardID}}</span>
|
||||
{% else %}
|
||||
{{event.name}}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="vertical-separator"></div>
|
||||
<div class="everything-else">
|
||||
<h1 id="myBtn">Card access manager</h1>
|
||||
</div>
|
||||
<div class="shadow" onclick="overlay_out()"></div>
|
||||
<div class="overlay">
|
||||
<h2 class="card-id"></h2>
|
||||
<input type="text" name="name" placeholder="Name" id="name"><br><br>
|
||||
 <input type="checkbox" name="fridge" value="Fridge" id="fridge"> Fridge <br>
|
||||
 <input type="checkbox" name="tools" value="Tools" id="tools"> Secret tools
|
||||
<input type="button" class="button" value="Cancel" id="cancel" onclick="overlay_out()">
|
||||
<input type="button" class="button" value="Save" id="save" onclick="save()">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue