{"id":26100,"student_id":10,"content":"{\"html\":\"\u003c!DOCTYPE html\u003e\\n\u003chtml\u003e\\n\\n\u003chead\u003e\\n\\t\u003ctitle\u003eDocument\u003c/title\u003e\\n\\t\u003clink rel=\\\"stylesheet\\\" href=\\\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css\\\" integrity=\\\"sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm\\\"\\n\\t crossorigin=\\\"anonymous\\\"\u003e\\n\\t\u003cscript src=\\\"https://code.jquery.com/jquery-3.2.1.slim.min.js\\\" integrity=\\\"sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN\\\"\\n\\t crossorigin=\\\"anonymous\\\"\u003e\u003c/script\u003e\\n\\t\u003cscript src=\\\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js\\\" integrity=\\\"sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q\\\"\\n\\t crossorigin=\\\"anonymous\\\"\u003e\u003c/script\u003e\\n\\t\u003cscript src=\\\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js\\\" integrity=\\\"sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl\\\"\\n\\t crossorigin=\\\"anonymous\\\"\u003e\u003c/script\u003e\\n\u003c/head\u003e\\n\\n\u003cbody class=\\\"bg-secondary text-white\\\"\u003e\\n\\t\u003cdiv class=\\\"container py-5\\\"\u003e\\n\\n\\n\\n\\t\\t\u003cdiv class=\\\"row\\\"\u003e\\n\\t\\t\\t\u003cdiv class=\\\"col-md-12\\\"\u003e\\n\\t\\t\\t\\t\u003cdiv class=\\\"card bg-dark mb-5\\\"\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-header\\\"\u003e\\n\\t\\t\\t\\t\\t\\tSUM\\n \u003ch1 class=\\\"js-sum\\\"\u003e\u003c/h1\u003e\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-body\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\u003cbutton class=\\\"btn btn-primary\\\" data-toggle=\\\"modal\\\" data-target=\\\"#exampleModal\\\"\u003e新增\u003c/button\u003e\\n\\t\\t\\t\\t\\t\\t\u003cbutton class=\\\"btn btn-danger\\\" data-toggle=\\\"modal\\\" data-target=\\\"#exampleModal\\\"\u003e30 天\u003c/button\u003e\\n\\t\\t\\t\\t\\t\\t\u003cbutton class=\\\"btn btn-danger\\\" data-toggle=\\\"modal\\\" data-target=\\\"#exampleModal\\\"\u003e60 天\u003c/button\u003e\\n\\t\\t\\t\\t\\t\\t\u003cbutton class=\\\"btn btn-danger\\\" data-toggle=\\\"modal\\\" data-target=\\\"#exampleModal\\\"\u003e90 天\u003c/button\u003e\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003c/div\u003e\\n\\t\\t\u003c/div\u003e\\n\\t\\t\u003cdiv class=\\\"row\\\"\u003e\\n\\t\\t\\t\u003cdiv class=\\\"col-md-4\\\"\u003e\\n\\t\\t\\t\\t\u003cdiv class=\\\"card bg-dark\\\"\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-header\\\"\u003e\\n\\t\\t\\t\\t\\t\\tTOP 10\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-body\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\u003col class=\\\"js-top-ten\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\u003c/ol\u003e\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003cdiv class=\\\"col-md-4\\\"\u003e\\n\\t\\t\\t\\t\u003cdiv class=\\\"card bg-dark\\\"\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-header\\\"\u003e\\n\\t\\t\\t\\t\\t\\tRates\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"js-rates p-3\\\"\u003e\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003cdiv class=\\\"col-md-4\\\"\u003e\\n\\t\\t\\t\\t\u003cdiv class=\\\"card bg-dark\\\"\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-header\\\"\u003e\\n\\t\\t\\t\\t\\t\\t30 days log\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"card-body\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\u003cul class=\\\"js-30day-log\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\u003c/ul\u003e\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003c/div\u003e\\n\\n\\t\\t\\t\u003ctable class=\\\"table table-dark\\\"\u003e\\n\\t\\t\\t\\t\u003cthead\u003e\\n\\t\\t\\t\\t\\t\u003ctr\u003e\\n\\t\\t\\t\\t\\t\\t\u003cth scope=\\\"col\\\"\u003e#\u003c/th\u003e\\n\\t\\t\\t\\t\\t\\t\u003cth scope=\\\"col\\\"\u003e種類\u003c/th\u003e\\n\\t\\t\\t\\t\\t\\t\u003cth scope=\\\"col\\\"\u003e日期\u003c/th\u003e\\n\\t\\t\\t\\t\\t\\t\u003cth scope=\\\"col\\\"\u003e價格\u003c/th\u003e\\n\\t\\t\\t\\t\\t\\t\u003cth scope=\\\"col\\\"\u003e名稱\u003c/th\u003e\\n\\t\\t\\t\\t\\t\\t\u003cth scope=\\\"col\\\"\u003e描述\u003c/th\u003e\\n\\t\\t\\t\\t\\t\u003c/tr\u003e\\n\\t\\t\\t\\t\u003c/thead\u003e\\n\\t\\t\\t\\t\u003ctbody\u003e\\n\\t\\t\\t\\t\u003c/tbody\u003e\\n\\t\\t\\t\u003c/table\u003e\\n\\n\\n\\t\\t\\t\u003cdiv class=\\\"modal fade\\\" id=\\\"exampleModal\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\" aria-labelledby=\\\"exampleModalLabel\\\" aria-hidden=\\\"true\\\"\u003e\\n\\t\\t\\t\\t\u003cdiv class=\\\"modal-dialog\\\" role=\\\"document\\\"\u003e\\n\\t\\t\\t\\t\\t\u003cdiv class=\\\"modal-content\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"modal-header\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\u003ch5 class=\\\"modal-title\\\" id=\\\"exampleModalLabel\\\"\u003eNew message\u003c/h5\u003e\\n\\t\\t\\t\\t\\t\\t\\t\u003cbutton type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-label=\\\"Close\\\"\u003e\\n \u003cspan aria-hidden=\\\"true\\\"\u003e\u0026times;\u003c/span\u003e\\n \u003c/button\u003e\\n\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"modal-body\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\u003cform class=\\\"text-dark\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"form-group\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003clabel for=\\\"category\\\"\u003eExample select\u003c/label\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003cselect class=\\\"form-control\\\" id=\\\"category\\\"\u003e\\n \u003coption value=\\\"交通\\\"\u003e交通\u003c/option\u003e\\n \u003coption value=\\\"購物\\\"\u003e購物\u003c/option\u003e\\n \u003coption value=\\\"飲食\\\"\u003e飲食\u003c/option\u003e\\n \u003coption value=\\\"娛樂\\\"\u003e娛樂\u003c/option\u003e\\n \u003coption value=\\\"生活\\\"\u003e生活\u003c/option\u003e\\n \u003coption value=\\\"學習\\\"\u003e學習\u003c/option\u003e\\n \u003coption value=\\\"其他\\\"\u003e其他\u003c/option\u003e\\n \u003c/select\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"form-group\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003clabel for=\\\"recipient-name\\\" class=\\\"col-form-label\\\"\u003e日期:\u003c/label\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003cinput type=\\\"date\\\" class=\\\"form-control\\\" id=\\\"date\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"form-group\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003clabel for=\\\"recipient-name\\\" class=\\\"col-form-label\\\"\u003e金額:\u003c/label\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003cinput type=\\\"number\\\" class=\\\"form-control\\\" id=\\\"price\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"form-group\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003clabel for=\\\"recipient-name\\\" class=\\\"col-form-label\\\"\u003e名稱:\u003c/label\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003cinput type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"name\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"form-group\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003clabel for=\\\"message-text\\\" class=\\\"col-form-label\\\"\u003e描述:\u003c/label\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\u003ctextarea class=\\\"form-control\\\" id=\\\"description\\\"\u003e\u003c/textarea\u003e\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\\t\u003c/form\u003e\\n\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\\t\u003cdiv class=\\\"modal-footer\\\"\u003e\\n\\t\\t\\t\\t\\t\\t\\t\u003cbutton type=\\\"button\\\" class=\\\"btn btn-secondary\\\" data-dismiss=\\\"modal\\\"\u003eClose\u003c/button\u003e\\n\\t\\t\\t\\t\\t\\t\\t\u003cbutton type=\\\"button\\\" class=\\\"btn btn-primary js-submit\\\"\u003eSend message\u003c/button\u003e\\n\\t\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\\t\u003c/div\u003e\\n\\t\\t\\t\u003c/div\u003e\\n\\t\\t\u003c/div\u003e\\n\\t\u003c/div\u003e\\n\u003c/body\u003e\\n\\n\u003c/html\u003e\",\"css\":\"/* body {\\n background: #1f253d;\\n}\\n\\n.card {\\n background: #394264;\\n color: #ffffff;\\n border-width: 0;\\n} */\",\"js\":\"var account = DB.table('account');\\n\\n$('.js-submit').on('click', function () {\\n var category = $('#category').val();\\n var date = $('#date').val();\\n var price = $('#price').val();\\n var name = $('#name').val();\\n var description = $('#description').val();\\n var time = new Date(date);\\n\\n account.insert({\\n category: category,\\n date: time,\\n timestamp: time.getTime(),\\n price: price,\\n name: name,\\n description: description\\n });\\n\\n update();\\n $('#exampleModal').modal('hide');\\n});\\n\\nupdate();\\n\\nfunction update() {\\n account.find({\\n timestamp: {\\n \\\"$gt\\\": Date.now() - 1000*60*60*24*30,\\n \\\"$lt\\\": Date.now()\\n }\\n }, function (data) {\\n updateTable(data);\\n updateTopTen(data);\\n updateRateProgress(data);\\n updateTrend(data);\\n });\\n}\\n\\nfunction updateTable (data) {\\n $('tbody').html('');\\n data.sort((a, b) =\u003e b.timestamp - a.timestamp);\\n for (var i = 0; i \u003c data.length; i++) {\\n var date = new Date(data[i].date);\\n $('tbody').append(`\u003ctr\u003e\\n \u003ctd\u003e${i + 1}\u003c/td\u003e\\n \u003ctd\u003e${data[i].category}\u003c/td\u003e\\n \u003ctd\u003e${date.toLocaleDateString()}\u003c/td\u003e\\n \u003ctd\u003e${data[i].price}\u003c/td\u003e\\n \u003ctd\u003e${data[i].name}\u003c/td\u003e\\n \u003ctd\u003e${data[i].description}\u003c/td\u003e\\n \u003c/tr\u003e`)\\n }\\n}\\n\\nfunction updateTopTen(data) {\\n $('.js-top-ten').html('');\\n data.sort((a, b) =\u003e b.price - a.price);\\n for (var i = 0; i \u003c 10 \u0026\u0026 i \u003c data.length; i++) {\\n console.log(data[i].name)\\n $('.js-top-ten').append(`\u003cli\u003e${data[i].name}:${data[i].price}\u003c/li\u003e`);\\n }\\n}\\n\\nfunction updateRateProgress(data) {\\n $('.js-rates').html('');\\n var rates = {};\\n var sum = 0;\\n for (var i = 0; i \u003c data.length; i++) {\\n var d = data[i];\\n if (rates[d.category] == undefined) {\\n rates[d.category] = 0;\\n }\\n rates[d.category] += Number(d.price);\\n sum += Number(d.price);\\n }\\n for (var key in rates) {\\n var rate = Math.floor(100 * rates[key] / sum);\\n $('.js-rates').append(`\\n \u003ch4\u003e${key}\u003c/h4\u003e\\n \u003cdiv class=\\\"progress\\\"\u003e\\n \u003cdiv class=\\\"progress-bar\\\" role=\\\"progressbar\\\" style=\\\"width: ${rate}% \\\" aria-valuenow=\\\"0\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"\u003e${rate}%\u003c/div\u003e\\n \u003c/div\u003e`)\\n }\\n\\n $('.js-sum').text('總額:' + sum);\\n}\\n\\nfunction updateTrend(data) {\\n var day = 60*60*24*1000;\\n var history = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];\\n\\n for (var i=0; i\u003cdata.length; i++) {\\n var timestamp = data[i].timestamp;\\n var offset = Math.floor((Date.now() - timestamp)/day);\\n if (offset \u003c 30) {\\n history[offset] += Number(data[i].price);\\n }\\n }\\n\\n $('.js-30day-log').html('');\\n for (var i=0; i\u003c30; i++) {\\n $('.js-30day-log').append(`\u003cli\u003e${history[i]}\u003c/li\u003e`);\\n }\\n}\"}","created_at":"2018-04-11T17:53:15.966+08:00","updated_at":"2019-10-21T14:00:41.233+08:00","name":"記帳","language":"web","screenshot":{"url":"/uploads/project/screenshot/26100/4d6f431c5756cf49d64e77cd5a171e35.jpg"},"parent_id":null,"plugin":"","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":486,"hashid":"jzmsk592","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[]
Orange Apple Learning Platform
My Projects
View Project Page
Export
Remix
Import
Delete
Download Android APP (APK)
Screenshot
Open Web Site
繁中
简中
English
日本語
1:1:1
1:1
Full Width
Scan the QRCode below with your phone to install
Or you can
download APK
to this computer
Scan the QRCode below with your phone to install
Or you can
download APK
to this computer