├── .gitignore ├── .gitmodules ├── 3rd └── update.py ├── 3rdparty └── libjpeg.so.8.1.2 ├── LICENSE ├── MANIFEST.in ├── Makefile ├── Makefile.lua ├── Makefile.static ├── README.md ├── bachelor.h ├── copilot ├── .babelrc ├── .editorconfig ├── .eslintrc.js ├── Makefile ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── utils.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js ├── config │ ├── dev.env.js │ ├── index.js │ ├── prod.env.js │ └── test.env.js ├── index.html ├── package.json ├── src │ ├── assets │ │ └── logo.png │ ├── components │ │ ├── 404.vue │ │ ├── App.vue │ │ ├── Dash.vue │ │ ├── Login.vue │ │ └── dash │ │ │ ├── Access.vue │ │ │ ├── Dashboard.vue │ │ │ ├── Overview.vue │ │ │ ├── Repos.vue │ │ │ ├── Samples.vue │ │ │ ├── Server.vue │ │ │ ├── Setting.vue │ │ │ ├── Stream.vue │ │ │ ├── Tables.vue │ │ │ └── Tasks.vue │ ├── filters │ │ └── index.js │ ├── main.js │ ├── routes.js │ └── store.js ├── static │ ├── css │ │ ├── AdminLTE.min.css │ │ ├── bootstrap-slider.min.css │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map.css │ │ └── skin-blue.min.css │ ├── img │ │ ├── banner.jpg │ │ ├── favicon.ico │ │ ├── logo.png │ │ ├── logo_blk.png │ │ ├── logo_blk_sm.png │ │ ├── logo_sm.png │ │ ├── screenshot.png │ │ ├── screenshotv2.png │ │ └── stock │ │ │ └── user1-128x128.jpg │ └── js │ │ ├── bootstrap-slider.min.js │ │ ├── copilot.js │ │ └── plugins │ │ ├── AdminLTE │ │ └── app.min.js │ │ ├── bootstrap │ │ └── bootstrap.min.js │ │ ├── chartjs │ │ ├── Chart.js │ │ └── Chart.min.js │ │ ├── datatables │ │ ├── dataTables.bootstrap.css │ │ ├── dataTables.bootstrap.js │ │ ├── dataTables.bootstrap.min.js │ │ ├── extensions │ │ │ ├── AutoFill │ │ │ │ ├── Readme.txt │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.autoFill.css │ │ │ │ │ └── dataTables.autoFill.min.css │ │ │ │ ├── examples │ │ │ │ │ ├── columns.html │ │ │ │ │ ├── complete-callback.html │ │ │ │ │ ├── fill-both.html │ │ │ │ │ ├── fill-horizontal.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── scrolling.html │ │ │ │ │ ├── simple.html │ │ │ │ │ └── step-callback.html │ │ │ │ ├── images │ │ │ │ │ └── filler.png │ │ │ │ └── js │ │ │ │ │ ├── dataTables.autoFill.js │ │ │ │ │ └── dataTables.autoFill.min.js │ │ │ ├── ColReorder │ │ │ │ ├── License.txt │ │ │ │ ├── Readme.md │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.colReorder.css │ │ │ │ │ └── dataTables.colReorder.min.css │ │ │ │ ├── examples │ │ │ │ │ ├── alt_insert.html │ │ │ │ │ ├── col_filter.html │ │ │ │ │ ├── colvis.html │ │ │ │ │ ├── fixedcolumns.html │ │ │ │ │ ├── fixedheader.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── jqueryui.html │ │ │ │ │ ├── new_init.html │ │ │ │ │ ├── predefined.html │ │ │ │ │ ├── realtime.html │ │ │ │ │ ├── reset.html │ │ │ │ │ ├── scrolling.html │ │ │ │ │ ├── server_side.html │ │ │ │ │ ├── simple.html │ │ │ │ │ └── state_save.html │ │ │ │ ├── images │ │ │ │ │ └── insert.png │ │ │ │ └── js │ │ │ │ │ ├── dataTables.colReorder.js │ │ │ │ │ └── dataTables.colReorder.min.js │ │ │ ├── ColVis │ │ │ │ ├── License.txt │ │ │ │ ├── Readme.md │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.colVis.css │ │ │ │ │ ├── dataTables.colVis.min.css │ │ │ │ │ └── dataTables.colvis.jqueryui.css │ │ │ │ ├── examples │ │ │ │ │ ├── button_order.html │ │ │ │ │ ├── exclude_columns.html │ │ │ │ │ ├── group_columns.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── jqueryui.html │ │ │ │ │ ├── mouseover.html │ │ │ │ │ ├── new_init.html │ │ │ │ │ ├── restore.html │ │ │ │ │ ├── simple.html │ │ │ │ │ ├── text.html │ │ │ │ │ ├── title_callback.html │ │ │ │ │ ├── two_tables.html │ │ │ │ │ └── two_tables_identical.html │ │ │ │ └── js │ │ │ │ │ ├── dataTables.colVis.js │ │ │ │ │ └── dataTables.colVis.min.js │ │ │ ├── FixedColumns │ │ │ │ ├── License.txt │ │ │ │ ├── Readme.md │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.fixedColumns.css │ │ │ │ │ └── dataTables.fixedColumns.min.css │ │ │ │ ├── examples │ │ │ │ │ ├── bootstrap.html │ │ │ │ │ ├── col_filter.html │ │ │ │ │ ├── colvis.html │ │ │ │ │ ├── css_size.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index_column.html │ │ │ │ │ ├── left_right_columns.html │ │ │ │ │ ├── right_column.html │ │ │ │ │ ├── rowspan.html │ │ │ │ │ ├── server-side-processing.html │ │ │ │ │ ├── simple.html │ │ │ │ │ ├── size_fixed.html │ │ │ │ │ ├── size_fluid.html │ │ │ │ │ └── two_columns.html │ │ │ │ └── js │ │ │ │ │ ├── dataTables.fixedColumns.js │ │ │ │ │ └── dataTables.fixedColumns.min.js │ │ │ ├── FixedHeader │ │ │ │ ├── Readme.txt │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.fixedHeader.css │ │ │ │ │ └── dataTables.fixedHeader.min.css │ │ │ │ ├── examples │ │ │ │ │ ├── header_footer.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── simple.html │ │ │ │ │ ├── top_left_right.html │ │ │ │ │ ├── two_tables.html │ │ │ │ │ └── zIndexes.html │ │ │ │ └── js │ │ │ │ │ ├── dataTables.fixedHeader.js │ │ │ │ │ └── dataTables.fixedHeader.min.js │ │ │ ├── KeyTable │ │ │ │ ├── Readme.txt │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.keyTable.css │ │ │ │ │ └── dataTables.keyTable.min.css │ │ │ │ ├── examples │ │ │ │ │ ├── events.html │ │ │ │ │ ├── html.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── scrolling.html │ │ │ │ │ └── simple.html │ │ │ │ └── js │ │ │ │ │ ├── dataTables.keyTable.js │ │ │ │ │ └── dataTables.keyTable.min.js │ │ │ ├── Responsive │ │ │ │ ├── License.txt │ │ │ │ ├── Readme.md │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.responsive.css │ │ │ │ │ └── dataTables.responsive.scss │ │ │ │ ├── examples │ │ │ │ │ ├── child-rows │ │ │ │ │ │ ├── column-control.html │ │ │ │ │ │ ├── custom-renderer.html │ │ │ │ │ │ ├── disable-child-rows.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── right-column.html │ │ │ │ │ │ └── whole-row-control.html │ │ │ │ │ ├── display-control │ │ │ │ │ │ ├── auto.html │ │ │ │ │ │ ├── classes.html │ │ │ │ │ │ ├── complexHeader.html │ │ │ │ │ │ ├── fixedHeader.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── init-classes.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── initialisation │ │ │ │ │ │ ├── ajax.html │ │ │ │ │ │ ├── className.html │ │ │ │ │ │ ├── default.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── new.html │ │ │ │ │ │ └── option.html │ │ │ │ │ └── styling │ │ │ │ │ │ ├── bootstrap.html │ │ │ │ │ │ ├── compact.html │ │ │ │ │ │ ├── foundation.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── scrolling.html │ │ │ │ └── js │ │ │ │ │ ├── dataTables.responsive.js │ │ │ │ │ └── dataTables.responsive.min.js │ │ │ ├── Scroller │ │ │ │ ├── Readme.txt │ │ │ │ ├── css │ │ │ │ │ ├── dataTables.scroller.css │ │ │ │ │ └── dataTables.scroller.min.css │ │ │ │ ├── examples │ │ │ │ │ ├── api_scrolling.html │ │ │ │ │ ├── data │ │ │ │ │ │ ├── 2500.txt │ │ │ │ │ │ └── ssp.php │ │ │ │ │ ├── index.html │ │ │ │ │ ├── large_js_source.html │ │ │ │ │ ├── server-side_processing.html │ │ │ │ │ ├── simple.html │ │ │ │ │ └── state_saving.html │ │ │ │ ├── images │ │ │ │ │ └── loading-background.png │ │ │ │ └── js │ │ │ │ │ ├── dataTables.scroller.js │ │ │ │ │ └── dataTables.scroller.min.js │ │ │ └── TableTools │ │ │ │ ├── Readme.md │ │ │ │ ├── css │ │ │ │ ├── dataTables.tableTools.css │ │ │ │ └── dataTables.tableTools.min.css │ │ │ │ ├── examples │ │ │ │ ├── ajax.html │ │ │ │ ├── alter_buttons.html │ │ │ │ ├── bootstrap.html │ │ │ │ ├── button_text.html │ │ │ │ ├── collection.html │ │ │ │ ├── defaults.html │ │ │ │ ├── index.html │ │ │ │ ├── jqueryui.html │ │ │ │ ├── multi_instance.html │ │ │ │ ├── multiple_tables.html │ │ │ │ ├── new_init.html │ │ │ │ ├── pdf_message.html │ │ │ │ ├── plug-in.html │ │ │ │ ├── select_column.html │ │ │ │ ├── select_multi.html │ │ │ │ ├── select_os.html │ │ │ │ ├── select_single.html │ │ │ │ ├── simple.html │ │ │ │ └── swf_path.html │ │ │ │ ├── images │ │ │ │ ├── collection.png │ │ │ │ ├── collection_hover.png │ │ │ │ ├── copy.png │ │ │ │ ├── copy_hover.png │ │ │ │ ├── csv.png │ │ │ │ ├── csv_hover.png │ │ │ │ ├── pdf.png │ │ │ │ ├── pdf_hover.png │ │ │ │ ├── print.png │ │ │ │ ├── print_hover.png │ │ │ │ ├── psd │ │ │ │ │ ├── collection.psd │ │ │ │ │ ├── copy document.psd │ │ │ │ │ ├── file_types.psd │ │ │ │ │ └── printer.psd │ │ │ │ ├── xls.png │ │ │ │ └── xls_hover.png │ │ │ │ ├── js │ │ │ │ ├── dataTables.tableTools.js │ │ │ │ └── dataTables.tableTools.min.js │ │ │ │ └── swf │ │ │ │ ├── copy_csv_xls.swf │ │ │ │ └── copy_csv_xls_pdf.swf │ │ ├── images │ │ │ ├── sort_asc.png │ │ │ ├── sort_asc_disabled.png │ │ │ ├── sort_both.png │ │ │ ├── sort_desc.png │ │ │ └── sort_desc_disabled.png │ │ ├── jquery.dataTables.css │ │ ├── jquery.dataTables.js │ │ ├── jquery.dataTables.min.css │ │ ├── jquery.dataTables.min.js │ │ └── jquery.dataTables_themeroller.css │ │ ├── datepicker │ │ ├── bootstrap-datepicker.js │ │ ├── datepicker3.css │ │ └── locales │ │ │ ├── bootstrap-datepicker.ar.js │ │ │ ├── bootstrap-datepicker.az.js │ │ │ ├── bootstrap-datepicker.bg.js │ │ │ ├── bootstrap-datepicker.ca.js │ │ │ ├── bootstrap-datepicker.cs.js │ │ │ ├── bootstrap-datepicker.cy.js │ │ │ ├── bootstrap-datepicker.da.js │ │ │ ├── bootstrap-datepicker.de.js │ │ │ ├── bootstrap-datepicker.el.js │ │ │ ├── bootstrap-datepicker.es.js │ │ │ ├── bootstrap-datepicker.et.js │ │ │ ├── bootstrap-datepicker.fa.js │ │ │ ├── bootstrap-datepicker.fi.js │ │ │ ├── bootstrap-datepicker.fr.js │ │ │ ├── bootstrap-datepicker.gl.js │ │ │ ├── bootstrap-datepicker.he.js │ │ │ ├── bootstrap-datepicker.hr.js │ │ │ ├── bootstrap-datepicker.hu.js │ │ │ ├── bootstrap-datepicker.id.js │ │ │ ├── bootstrap-datepicker.is.js │ │ │ ├── bootstrap-datepicker.it.js │ │ │ ├── bootstrap-datepicker.ja.js │ │ │ ├── bootstrap-datepicker.ka.js │ │ │ ├── bootstrap-datepicker.kk.js │ │ │ ├── bootstrap-datepicker.kr.js │ │ │ ├── bootstrap-datepicker.lt.js │ │ │ ├── bootstrap-datepicker.lv.js │ │ │ ├── bootstrap-datepicker.mk.js │ │ │ ├── bootstrap-datepicker.ms.js │ │ │ ├── bootstrap-datepicker.nb.js │ │ │ ├── bootstrap-datepicker.nl-BE.js │ │ │ ├── bootstrap-datepicker.nl.js │ │ │ ├── bootstrap-datepicker.no.js │ │ │ ├── bootstrap-datepicker.pl.js │ │ │ ├── bootstrap-datepicker.pt-BR.js │ │ │ ├── bootstrap-datepicker.pt.js │ │ │ ├── bootstrap-datepicker.ro.js │ │ │ ├── bootstrap-datepicker.rs-latin.js │ │ │ ├── bootstrap-datepicker.rs.js │ │ │ ├── bootstrap-datepicker.ru.js │ │ │ ├── bootstrap-datepicker.sk.js │ │ │ ├── bootstrap-datepicker.sl.js │ │ │ ├── bootstrap-datepicker.sq.js │ │ │ ├── bootstrap-datepicker.sv.js │ │ │ ├── bootstrap-datepicker.sw.js │ │ │ ├── bootstrap-datepicker.th.js │ │ │ ├── bootstrap-datepicker.tr.js │ │ │ ├── bootstrap-datepicker.ua.js │ │ │ ├── bootstrap-datepicker.vi.js │ │ │ ├── bootstrap-datepicker.zh-CN.js │ │ │ └── bootstrap-datepicker.zh-TW.js │ │ ├── jQuery │ │ └── jQuery-2.2.0.min.js │ │ ├── jvectormap │ │ ├── jquery-jvectormap-2.0.3.css │ │ ├── jquery-jvectormap-2.0.3.min.js │ │ └── jquery-jvectormap-world-mill.js │ │ ├── pace │ │ ├── pace.css │ │ ├── pace.js │ │ ├── pace.min.css │ │ └── pace.min.js │ │ └── select2 │ │ ├── i18n │ │ ├── ar.js │ │ ├── az.js │ │ ├── bg.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── da.js │ │ ├── de.js │ │ ├── en.js │ │ ├── es.js │ │ ├── et.js │ │ ├── eu.js │ │ ├── fa.js │ │ ├── fi.js │ │ ├── fr.js │ │ ├── gl.js │ │ ├── he.js │ │ ├── hi.js │ │ ├── hr.js │ │ ├── hu.js │ │ ├── id.js │ │ ├── is.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ko.js │ │ ├── lt.js │ │ ├── lv.js │ │ ├── mk.js │ │ ├── ms.js │ │ ├── nb.js │ │ ├── nl.js │ │ ├── pl.js │ │ ├── pt-BR.js │ │ ├── pt.js │ │ ├── ro.js │ │ ├── ru.js │ │ ├── sk.js │ │ ├── sr-Cyrl.js │ │ ├── sr.js │ │ ├── sv.js │ │ ├── th.js │ │ ├── tr.js │ │ ├── uk.js │ │ ├── vi.js │ │ ├── zh-CN.js │ │ └── zh-TW.js │ │ ├── select2.css │ │ ├── select2.full.js │ │ ├── select2.full.min.js │ │ ├── select2.js │ │ ├── select2.min.css │ │ └── select2.min.js └── test │ ├── e2e │ ├── custom-assertions │ │ └── elementCount.js │ ├── nightwatch.conf.js │ ├── runner.js │ └── specs │ │ └── test.js │ └── unit │ ├── .eslintrc │ ├── index.js │ ├── karma.conf.js │ └── specs │ └── Hello.spec.js ├── doc ├── imagenet.md ├── server_dev_cpp.md └── server_dev_js.md ├── docker-make-server.sh ├── examples ├── caffe │ ├── README │ ├── README.caffe │ ├── mean.binaryproto │ ├── solver.prototxt │ ├── train.sh │ └── train_val.prototxt ├── datasets │ ├── picpac-import-cifar.cpp │ └── picpac-import-nmist.cpp ├── keras │ └── cifar10_cnn.py ├── lasagne │ └── mnist.py ├── mxnet │ ├── Dockerfile │ ├── Makefile │ ├── README │ ├── find_mxnet.py │ ├── symbol_alexnet.py │ ├── symbol_googlenet.py │ ├── symbol_inception-bn-28-small.py │ ├── symbol_inception-bn-full.py │ ├── symbol_inception-bn.py │ ├── symbol_inception-v3.py │ ├── symbol_resnet-28-small.py │ ├── symbol_vgg.py │ └── train.py └── tensorflow │ ├── Dockerfile │ ├── Makefile │ ├── README │ ├── fcn-predict.py │ ├── fcn-resnet.py │ ├── fcn.py │ ├── multipod.py │ └── train-slim.py ├── legacy-python-api.cpp ├── load-caffe.cpp ├── lua-api.cpp ├── make-server.sh ├── mkdocs.yml ├── obsolete └── picpac-proto.cpp ├── picpac-0.1.alpha-0.rockspec ├── picpac-annotate.cpp ├── picpac-crop.cpp ├── picpac-cv.cpp ├── picpac-cv.h ├── picpac-downsize.cpp ├── picpac-dumpvec.cpp ├── picpac-dupe.cpp ├── picpac-explorer.cpp ├── picpac-filter.cpp ├── picpac-image.cpp ├── picpac-image.h ├── picpac-import.cpp ├── picpac-kfold.cpp ├── picpac-merge.cpp ├── picpac-overview.h ├── picpac-point2ellipse.cpp ├── picpac-roi-scale.cpp ├── picpac-split-region.cpp ├── picpac-split.cpp ├── picpac-stat.cpp ├── picpac-stream.cpp ├── picpac-unpack.cpp ├── picpac-util.cpp ├── picpac-util.h ├── picpac.cpp ├── picpac.h ├── picpac_legacy ├── __init__.py ├── mxnet.py └── neon.py ├── pydocs ├── config.md ├── import.md ├── index.md ├── picpac-flow.jpg ├── stream.md └── topics.md ├── python-api.cpp ├── rfc3986.h ├── scripts ├── dump_yolo.py └── visualize_dumped_masks.py ├── setup-static.py ├── setup.py ├── shapes.cpp ├── stress.cpp ├── tar.h ├── test.cpp ├── transforms-anchors.cpp └── transforms.cpp /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "json11"] 2 | path = json11 3 | url = https://github.com/dropbox/json11.git 4 | [submodule "Catch"] 5 | path = Catch 6 | url = https://github.com/philsquared/Catch.git 7 | [submodule "boostache"] 8 | path = boostache 9 | url = https://github.com/cierelabs/boostache.git 10 | -------------------------------------------------------------------------------- /3rd/update.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import sys 3 | import subprocess as sp 4 | 5 | MODULES = [ 6 | ('https://github.com/pybind/pybind11.git', 7 | ['include', 'LICENSE']), 8 | ('https://github.com/fmtlib/fmt.git', 9 | ['include', 'LICENSE.rst']), 10 | ('https://github.com/gabime/spdlog.git', 11 | ['include', 'LICENSE']), 12 | #('https://github.com/xtensor-stack/xtensor.git', 13 | #['include', 'LICENSE']), 14 | #('https://github.com/xtensor-stack/xtl.git', 15 | #['include', 'LICENSE']), 16 | #('https://github.com/xtensor-stack/xtensor-python.git', 17 | #['include', 'LICENSE']), 18 | #('https://github.com/xtensor-stack/xtensor-blas.git', 19 | #['include', 'LICENSE']), 20 | ('https://github.com/nlohmann/json', 21 | ['single_include', 'LICENSE.MIT']), 22 | ('https://github.com/edmBernard/pybind11_opencv_numpy', 23 | ['ndarray_converter.h', 'ndarray_converter.cpp', 'LICENSE']) 24 | ] 25 | 26 | def call (cmd): 27 | sp.check_call(cmd, shell=True) 28 | 29 | call('mkdir -p tmp') 30 | for url, moves in MODULES: 31 | bname = url.rsplit('/', 1)[-1].split('.')[0] 32 | call(f'rm -rf {bname}; mkdir -p {bname}') 33 | call(f'if [ ! -d tmp/{bname} ]; then git clone --depth 1 {url} tmp/{bname}; fi') 34 | call(f'cd tmp/{bname}; git show | head -n 1 | cut -f 2 -d " " | cut -b 1-16 > ../../{bname}/commit') 35 | for move in moves: 36 | call(f'mv tmp/{bname}/{move} {bname}/') 37 | call('rm -rf tmp') 38 | 39 | -------------------------------------------------------------------------------- /3rdparty/libjpeg.so.8.1.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/3rdparty/libjpeg.so.8.1.2 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Wei Dong 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include picpac.h 2 | include picpac-cv.h 3 | include json11/json11.hpp 4 | 5 | -------------------------------------------------------------------------------- /Makefile.lua: -------------------------------------------------------------------------------- 1 | CXXFLAGS_EXTRA = -Ijson11 -Wall -Wno-sign-compare -std=c++1y -g -O3 -pthread 2 | LDLIBS = -lopencv_highgui -lopencv_core -lboost_filesystem -lboost_system -lboost_python -lglog -lluaT -lTH -lluajit 3 | 4 | all: picpac.so 5 | 6 | clean: 7 | rm -rf *.o picpac.so 8 | 9 | picpac.so: lua-api.o picpac.o picpac-cv.o json11/json11.o 10 | g++ $(LDFLAGS) -o $@ $^ $(LDLIBS) 11 | 12 | .cpp.o: 13 | g++ -c -o $@ $(CXXFLAGS) $(CXXFLAGS_EXTRA) $< 14 | 15 | install: picpac.so 16 | cp picpac.so $(LIBDIR)/lib 17 | 18 | -------------------------------------------------------------------------------- /Makefile.static: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CXX=g++ 3 | BUILD_INFO=-DPP_VERSION=\"$(shell git describe --always)\" -DPP_BUILD_ID=\"$(BUILD_ID)\" -DPP_BUILD_NUMBER=\"$(BUILD_NUMBER)\" -DPP_BUILD_TIME=\"$(shell date +%Y-%m-%dT%H:%M:%S)\" 4 | CFLAGS += -g -O3 5 | CXXFLAGS += -fPIC -Ijson11 -ICatch/include -ISimple-Web-Server -ISimple-Web-Extra -Wall -Wno-sign-compare -std=c++1y -fopenmp -g -O3 -pthread -msse4.2 $(BUILD_INFO) 6 | #CXXFLAGS += -DSUPPORT_AUDIO_SPECTROGRAM=1 7 | LDFLAGS += -fopenmp -static 8 | LDLIBS = libpicpac.a \ 9 | -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_core \ 10 | -lturbojpeg -ltiff -lpng -lwebp -llibjasper -lippicv \ 11 | -lboost_timer -lboost_chrono -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system \ 12 | -lglog -lgflags \ 13 | -lz -lrt -ldl 14 | 15 | HEADERS = picpac.h picpac-cv.h picpac-util.h 16 | COMMON = picpac-util.o picpac-cv.o picpac.o json11.o 17 | 18 | PROGS = picpac-unpack picpac-merge picpac-split picpac-downsize picpac-crop picpac-split-region picpac-dupe test stress picpac-import picpac-stream picpac-proto picpac-roi-scale picpac-stat picpac-point2ellipse #picpac-annotate picpac-dumpvec#load-caffe load-dir test test_tr server 19 | 20 | .PHONY: all release python upload_test upload sdist bfdfs 21 | 22 | all: libpicpac.a $(PROGS) 23 | 24 | libpicpac.a: $(COMMON) 25 | ar rvs $@ $^ 26 | 27 | %.o: %.cpp $(HEADERS) 28 | $(CXX) $(CXXFLAGS) -c $*.cpp 29 | 30 | json11.o: json11/json11.cpp 31 | $(CXX) $(CXXFLAGS) -o $@ -c $^ 32 | 33 | $(PROGS): %: %.o libpicpac.a 34 | $(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS) 35 | 36 | release: 37 | mkdir -p release 38 | cp $(PROGS) release 39 | 40 | clean: 41 | rm *.o $(PROGS) 42 | 43 | -------------------------------------------------------------------------------- /copilot/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } 6 | -------------------------------------------------------------------------------- /copilot/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /copilot/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 4 | extends: 'standard', 5 | // required to lint *.vue files 6 | plugins: [ 7 | 'html' 8 | ], 9 | // add your custom rules here 10 | 'rules': { 11 | // allow paren-less arrow functions 12 | 'arrow-parens': 0, 13 | // allow debugger during development 14 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /copilot/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all none 2 | 3 | all: 4 | if [ ! -d node_modules ] ; then npm install; fi 5 | npm run build --force 6 | 7 | none: 8 | true 9 | -------------------------------------------------------------------------------- /copilot/build/build.js: -------------------------------------------------------------------------------- 1 | /* global env:true rm:true mkdir:true cp:true */ 2 | // https://github.com/shelljs/shelljs 3 | require('./check-versions')() 4 | require('shelljs/global') 5 | env.NODE_ENV = 'production' 6 | 7 | var path = require('path') 8 | var config = require('../config') 9 | var ora = require('ora') 10 | var webpack = require('webpack') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | console.log( 14 | ' Tip:\n' + 15 | ' Built files are meant to be served over an HTTP server.\n' + 16 | ' Opening index.html over file:// won\'t work.\n' 17 | ) 18 | 19 | var spinner = ora('building for production...') 20 | spinner.start() 21 | 22 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 23 | rm('-rf', assetsPath) 24 | mkdir('-p', assetsPath) 25 | cp('-R', 'static/*', assetsPath) 26 | 27 | webpack(webpackConfig, function (err, stats) { 28 | spinner.stop() 29 | if (err) throw err 30 | process.stdout.write(stats.toString({ 31 | colors: true, 32 | modules: false, 33 | children: false, 34 | chunks: false, 35 | chunkModules: false 36 | }) + '\n') 37 | }) 38 | -------------------------------------------------------------------------------- /copilot/build/check-versions.js: -------------------------------------------------------------------------------- 1 | var semver = require('semver') 2 | var chalk = require('chalk') 3 | var packageConfig = require('../package.json') 4 | var exec = function (cmd) { 5 | return require('child_process') 6 | .execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | { 16 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /copilot/build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /copilot/build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | var config = require('../config') 3 | if (!process.env.NODE_ENV) process.env.NODE_ENV = config.dev.env 4 | var path = require('path') 5 | var express = require('express') 6 | var webpack = require('webpack') 7 | var opn = require('opn') 8 | var proxyMiddleware = require('http-proxy-middleware') 9 | var webpackConfig = process.env.NODE_ENV === 'testing' 10 | ? require('./webpack.prod.conf') 11 | : require('./webpack.dev.conf') 12 | 13 | // default port where dev server listens for incoming traffic 14 | var port = process.env.PORT || config.dev.port 15 | // Define HTTP proxies to your custom API backend 16 | // https://github.com/chimurai/http-proxy-middleware 17 | var proxyTable = config.dev.proxyTable 18 | 19 | var app = express() 20 | var compiler = webpack(webpackConfig) 21 | 22 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 23 | publicPath: webpackConfig.output.publicPath, 24 | stats: { 25 | colors: true, 26 | chunks: false 27 | } 28 | }) 29 | 30 | var hotMiddleware = require('webpack-hot-middleware')(compiler) 31 | // force page reload when html-webpack-plugin template changes 32 | compiler.plugin('compilation', function (compilation) { 33 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 34 | hotMiddleware.publish({ action: 'reload' }) 35 | cb() 36 | }) 37 | }) 38 | 39 | // proxy api requests 40 | Object.keys(proxyTable).forEach(function (context) { 41 | var options = proxyTable[context] 42 | if (typeof options === 'string') { 43 | options = { target: options } 44 | } 45 | app.use(proxyMiddleware(context, options)) 46 | }) 47 | 48 | // handle fallback for HTML5 history API 49 | app.use(require('connect-history-api-fallback')()) 50 | 51 | // serve webpack bundle output 52 | app.use(devMiddleware) 53 | 54 | // enable hot-reload and state-preserving 55 | // compilation error display 56 | app.use(hotMiddleware) 57 | 58 | // serve pure static assets 59 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 60 | app.use(staticPath, express.static('./static')) 61 | 62 | module.exports = app.listen(port, function (err) { 63 | if (err) { 64 | console.log(err) 65 | return 66 | } 67 | var uri = 'http://localhost:' + port 68 | console.log('Listening at ' + uri + '\n') 69 | opn(uri) 70 | }) 71 | -------------------------------------------------------------------------------- /copilot/build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | // Extract CSS when that option is specified 29 | // (which is the case during production build) 30 | if (options.extract) { 31 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 32 | } else { 33 | return ['vue-style-loader', sourceLoader].join('!') 34 | } 35 | } 36 | 37 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 38 | return { 39 | css: generateLoaders(['css']), 40 | postcss: generateLoaders(['css']), 41 | less: generateLoaders(['css', 'less']), 42 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 43 | scss: generateLoaders(['css', 'sass']), 44 | stylus: generateLoaders(['css', 'stylus']), 45 | styl: generateLoaders(['css', 'stylus']) 46 | } 47 | } 48 | 49 | // Generate loaders for standalone style files (outside of .vue) 50 | exports.styleLoaders = function (options) { 51 | var output = [] 52 | var loaders = exports.cssLoaders(options) 53 | for (var extension in loaders) { 54 | var loader = loaders[extension] 55 | output.push({ 56 | test: new RegExp('\\.' + extension + '$'), 57 | loader: loader 58 | }) 59 | } 60 | return output 61 | } 62 | -------------------------------------------------------------------------------- /copilot/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var webpack = require('webpack') 3 | var merge = require('webpack-merge') 4 | var utils = require('./utils') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | 8 | // add hot-reload related code to entry chunks 9 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 10 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 11 | }) 12 | 13 | module.exports = merge(baseWebpackConfig, { 14 | module: { 15 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 16 | }, 17 | // eval-source-map is faster for development 18 | devtool: '#eval-source-map', 19 | plugins: [ 20 | new webpack.DefinePlugin({ 21 | 'process.env': config.dev.env 22 | }), 23 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 24 | new webpack.optimize.OccurenceOrderPlugin(), 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }) 33 | ] 34 | }) 35 | -------------------------------------------------------------------------------- /copilot/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /copilot/config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'] 18 | }, 19 | dev: { 20 | env: require('./dev.env'), 21 | port: 8080, 22 | assetsSubDirectory: 'static', 23 | assetsPublicPath: '/', 24 | proxyTable: {'/api': { 25 | target: 'http://localhost:18888', 26 | logLevel: 'debug' 27 | } 28 | }, 29 | // CSS Sourcemaps off by default because relative paths are "buggy" 30 | // with this option, according to the CSS-Loader README 31 | // (https://github.com/webpack/css-loader#sourcemaps) 32 | // In our experience, they generally work as expected, 33 | // just be aware of this issue when enabling this option. 34 | cssSourceMap: false 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /copilot/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /copilot/config/test.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var devEnv = require('./dev.env') 3 | 4 | module.exports = merge(devEnv, { 5 | NODE_ENV: '"testing"' 6 | }) 7 | -------------------------------------------------------------------------------- /copilot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PicPac Explorer 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /copilot/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/src/assets/logo.png -------------------------------------------------------------------------------- /copilot/src/components/404.vue: -------------------------------------------------------------------------------- 1 | 15 | 20 | 21 | 23 | -------------------------------------------------------------------------------- /copilot/src/components/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 44 | -------------------------------------------------------------------------------- /copilot/src/components/dash/Server.vue: -------------------------------------------------------------------------------- 1 | 22 | 62 | 63 | 65 | -------------------------------------------------------------------------------- /copilot/src/filters/index.js: -------------------------------------------------------------------------------- 1 | const urlParser = document.createElement('a') 2 | 3 | export function domain (url) { 4 | urlParser.href = url 5 | return urlParser.hostname 6 | } 7 | 8 | export function count (arr) { 9 | return arr.length 10 | } 11 | 12 | export function prettyDate (date) { 13 | var a = new Date(date) 14 | return a.toDateString() 15 | } 16 | 17 | export function pluralize (time, label) { 18 | if (time === 1) { 19 | return time + label 20 | } 21 | 22 | return time + label + 's' 23 | } 24 | -------------------------------------------------------------------------------- /copilot/src/main.js: -------------------------------------------------------------------------------- 1 | // Import System requirements 2 | import Vue from 'vue' 3 | import Resource from 'vue-resource' 4 | import VueRouter from 'vue-router' 5 | 6 | import routes from './routes' 7 | import store from './store' 8 | 9 | // Import Helpers for filters 10 | import { domain, count, prettyDate, pluralize } from './filters' 11 | 12 | // Import Views - Top level 13 | 14 | import AppView from './components/App.vue' 15 | 16 | // Import Install and register helper items 17 | Vue.filter('count', count) 18 | Vue.filter('domain', domain) 19 | Vue.filter('prettyDate', prettyDate) 20 | Vue.filter('pluralize', pluralize) 21 | 22 | // Resource logic 23 | Vue.use(Resource) 24 | 25 | Vue.use(VueRouter) 26 | 27 | Vue.http.interceptors.push((request, next) => { 28 | /* 29 | Enable this when you have a backend that you authenticate against 30 | var headers = request.headers 31 | 32 | if (window.location.pathname !== '/login' && !headers.hasOwnProperty('Authorization')) { 33 | headers.Authorization = this.$store.state.token 34 | } 35 | */ 36 | // console.log(headers) 37 | 38 | // continue to next interceptor without modifying the response 39 | next() 40 | }) 41 | 42 | // Routing logic 43 | var router = new VueRouter({ 44 | routes: routes, 45 | mode: 'history', 46 | scrollBehavior: function (to, from, savedPosition) { 47 | return savedPosition || { x: 0, y: 0 } 48 | } 49 | }) 50 | 51 | // Some middleware to help us ensure the user is authenticated. 52 | router.beforeEach((to, from, next) => { 53 | // window.console.log('Transition', transition) 54 | if (to.auth && (to.router.app.$store.state.token === 'null')) { 55 | window.console.log('Not authenticated') 56 | next({ 57 | path: '/login', 58 | query: { redirect: to.fullPath } 59 | }) 60 | } else { 61 | next() 62 | } 63 | }) 64 | 65 | // Start out app! 66 | // eslint-disable-next-line no-new 67 | new Vue({ 68 | el: '#root', 69 | router: router, 70 | store: store, 71 | render: h => h(AppView) 72 | }) 73 | 74 | // Check local storage to handle refreshes 75 | if (window.localStorage) { 76 | if (store.state.user !== window.localStorage.getItem('user')) { 77 | store.dispatch('SET_USER', JSON.parse(window.localStorage.getItem('user'))) 78 | store.dispatch('SET_TOKEN', window.localStorage.getItem('token')) 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /copilot/src/routes.js: -------------------------------------------------------------------------------- 1 | import DashView from './components/Dash.vue' 2 | import LoginView from './components/Login.vue' 3 | import NotFoundView from './components/404.vue' 4 | 5 | // Import Views - Dash 6 | // import DashboardView from './components/dash/Dashboard.vue' 7 | import OverviewView from './components/dash/Overview.vue' 8 | import SamplesView from './components/dash/Samples.vue' 9 | import StreamView from './components/dash/Stream.vue' 10 | /* 11 | import TasksView from './components/dash/Tasks.vue' 12 | import SettingView from './components/dash/Setting.vue' 13 | import AccessView from './components/dash/Access.vue' 14 | import ServerView from './components/dash/Server.vue' 15 | import ReposView from './components/dash/Repos.vue' 16 | */ 17 | 18 | // Routes 19 | const routes = [ 20 | { 21 | path: '/login', 22 | component: LoginView 23 | }, { 24 | path: '/', 25 | component: DashView, 26 | auth: true, 27 | children: [ 28 | { 29 | path: '', 30 | component: OverviewView, 31 | name: 'Overview', 32 | description: 'Overview of environment' 33 | }, 34 | { 35 | path: '/samples', 36 | component: SamplesView, 37 | name: 'Samples', 38 | description: 'Simple and advance table in CoPilot' 39 | }, 40 | { 41 | path: '/stream', 42 | component: StreamView, 43 | name: 'Stream', 44 | description: 'Simple and advance table in CoPilot' 45 | }/* , { 46 | path: '/tasks', 47 | component: TasksView, 48 | name: 'Tasks', 49 | description: 'Tasks page in the form of a timeline' 50 | }, { 51 | path: '/setting', 52 | component: SettingView, 53 | name: 'Settings', 54 | description: 'User settings page' 55 | }, { 56 | path: '/access', 57 | component: AccessView, 58 | name: 'Access', 59 | description: 'Example of using maps' 60 | }, { 61 | path: '/server', 62 | component: ServerView, 63 | name: 'Servers', 64 | description: 'List of our servers' 65 | }, { 66 | path: '/repos', 67 | component: ReposView, 68 | name: 'Repository', 69 | description: 'List of popular javascript repos' 70 | } */ 71 | ] 72 | }, { 73 | // not found handler 74 | path: '*', 75 | component: NotFoundView 76 | } 77 | ] 78 | 79 | export default routes 80 | -------------------------------------------------------------------------------- /copilot/src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | const state = { 7 | callingAPI: false, 8 | searching: '', 9 | serverURI: 'http://10.110.1.136:8080', 10 | user: null, 11 | token: null, 12 | userInfo: { 13 | messages: [{1: 'test', 2: 'test'}], 14 | notifications: [], 15 | tasks: [] 16 | } 17 | } 18 | 19 | const mutations = { 20 | TOGGLE_LOADING (state) { 21 | state.callingAPI = !state.callingAPI 22 | }, 23 | TOGGLE_SEARCHING (state) { 24 | state.searching = (state.searching === '') ? 'loading' : '' 25 | }, 26 | SET_USER (state, user) { 27 | state.user = user 28 | }, 29 | SET_TOKEN (state, token) { 30 | state.token = token 31 | } 32 | } 33 | 34 | export default new Vuex.Store({ 35 | state, 36 | mutations 37 | }) 38 | -------------------------------------------------------------------------------- /copilot/static/css/bootstrap.min.css.map.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /copilot/static/img/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/banner.jpg -------------------------------------------------------------------------------- /copilot/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/favicon.ico -------------------------------------------------------------------------------- /copilot/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/logo.png -------------------------------------------------------------------------------- /copilot/static/img/logo_blk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/logo_blk.png -------------------------------------------------------------------------------- /copilot/static/img/logo_blk_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/logo_blk_sm.png -------------------------------------------------------------------------------- /copilot/static/img/logo_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/logo_sm.png -------------------------------------------------------------------------------- /copilot/static/img/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/screenshot.png -------------------------------------------------------------------------------- /copilot/static/img/screenshotv2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/screenshotv2.png -------------------------------------------------------------------------------- /copilot/static/img/stock/user1-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/img/stock/user1-128x128.jpg -------------------------------------------------------------------------------- /copilot/static/js/copilot.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaalgo/picpac/28de073b2b0c471b5d75946b322d8aaec69d219d/copilot/static/js/copilot.js -------------------------------------------------------------------------------- /copilot/static/js/plugins/datatables/dataTables.bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | DataTables Bootstrap 3 integration 3 | ©2011-2014 SpryMedia Ltd - datatables.net/license 4 | */ 5 | (function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); 6 | b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k",{"class":u.sPageButton+" "+ 7 | f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('