Project

General

Profile

Actions

Feature #601

open

PiSentry File Management: web UI

Added by Hammel over 7 years ago. Updated 5 days ago.

Status:
In Progress
Priority:
Immediate
Assignee:
Category:
Web UI
Target version:
Start date:
28 Jul 2017
Due date:
% Done:

10%

Estimated time:
Severity:
01 - Critical

Description

A web UI for listing and deleting files. This is just for managing PiSentry disk space. The web UI runs on PiSentry but will have an API for use by Ironman.

Requirements
  1. Scan for PiStores using multicast requests.
    1. Saving files requires API for authentication on PiStore.
    2. Saving files requires nfs export by PiStore.
    3. PiStore needs Web Interface for specifying drives designated for PiSentry use. Initially, only enable by drives, not directories.
    4. Directories on PiStore need to be created for PiSentry registrations.
  2. PiSentry need user-defined identifications in Web UI
  3. Show saved files
  4. Enable/disable saving videos.
  5. Remove saved files.
  6. Enable/Disable camera.
  7. Enable/Disable local display of camera (on TFT)

Files

pisentry-webui.png (15.8 KB) pisentry-webui.png Hammel, 25 Mar 2025 19:36
pisentry-webui.png (27.4 KB) pisentry-webui.png Hammel, 25 Mar 2025 19:57

Related issues

Has duplicate Monitor - Feature #588: File Manager for PiStore'sIn ProgressHammel28 Jul 2017

Actions
Blocked by Pistore - Feature #883: PiStore needs to respond to multicast queriesNewHammel29 Jan 2022

Actions
Actions #1

Updated by Hammel over 7 years ago

  • Subject changed from File Management to File Management: web
Actions #2

Updated by Hammel about 5 years ago

  • Priority changed from Normal to Low
  • Target version changed from 0.5.0 to 2.0.0 - Dors Venabili
Actions #3

Updated by Hammel over 1 year ago

  • Description updated (diff)
  • Priority changed from Low to Immediate
  • Target version changed from 2.0.0 - Dors Venabili to 3.0 - Corrino
Actions #4

Updated by Hammel 11 months ago

Definitely needs to be under mongoose control. Might be a variation of Ironman imrest server. Not sure if I should combine them or make the conditionally compiled.

Looking at the imrest/imrest.c module, it would seem to be easy to map the GET/POST/DELETE requests based on conditional compilations, so I could add PiSentry support to imrest and only have it on PiSentry's.

Actions #5

Updated by Hammel 11 months ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 10

There are 13 source files for current imrest. Only 4 would play a part in PiStore web services. Conditionally compiling them would violate my KISS principles (not that pinet doesn't already violate them) so I'm going to create a separate web server for pistore, but it will be based on imrest's core C modules: imrest.c, cli.c, utils.c and mongoose.c. I may also want to integrate a similar initialization module like init.c

The new app will be called pistoreweb.

Interesting note: I can make static images of the disk usage, just like is shown in PiStore, using Cairo and writing to a PNG. Theoretically I don't need GTK+ to use Cairo like this. It won't be fancy graphics, but it means I could avoid client side javascript and just use standard HTML.

While applicable to pisentry, the above comment was for pistore. PiSentry will also base it's web interface on imrest, and it too will be a separate app. This one will be called pisentryweb.

Actions #6

Updated by Hammel 11 months ago

  • Description updated (diff)
Actions #7

Updated by Hammel 11 months ago

  • Severity changed from 03 - Medium to 01 - Critical
Actions #8

Updated by Hammel 11 months ago

  • Has duplicate Feature #588: File Manager for PiStore's added
Actions #9

Updated by Hammel 9 months ago

  • Severity changed from 01 - Critical to 02 - High
Actions #10

Updated by Hammel about 1 month ago

  • Description updated (diff)
Actions #11

Updated by Hammel about 1 month ago

  • Subject changed from File Management: web to PiSentry File Management: web UI
  • Description updated (diff)
Actions #12

Updated by Hammel about 1 month ago

  • Severity changed from 02 - High to 01 - Critical
Actions #13

Updated by Hammel 10 days ago

  • Description updated (diff)
Actions #14

Updated by Hammel 10 days ago

pisentryweb source tree was copied from pistoreweb and it's cdtools function updated.

Next I need to port the pistoreweb references to pisentryweb. Make sure the build works, then review the pistoreweb.c, utils.c and get.c to remove pistoreweb specifics. Then find a library that lets me create a UI in Javascript.

  1. 14 Best JS UI Libraries
    1. w2ui looks promising
  2. To 10 JS UI Library for 2025
    1. NGX Boostrap# looks promising
  3. Unsuck.js
    1. Strawberry - minimalistic javascript only
    2. Reef
    3. Conjure

Update

After looking these frameworks/libraries over I think I'd just rather use jQuery just like I do with piboxwww. It's simple and I can migrate any php to APIs between the client side and the mongoose server.

Actions #15

Updated by Hammel 5 days ago

  • Description updated (diff)

I need to design a layout for the UI. Then I can implement it in w2ui, or maybe one of the other simpler tools.

Actions #16

Updated by Hammel 5 days ago


This UI requires the following data from the PiStores:
  • PiStore name (or IP address)
  • Amount of available storage (total of all enabled drives)
  • Connect status (is this PiSentry current connected to that PiStore?)
PiSentry needs to send the following to PiStore
  • PiSentry name (and IP address)

Once a connect is made, the PiStore needs to export a directory ONLY to the PiSentry and tell the PiSentry what the mount point is.

All storage is done over NFS. The rest of the UI is local to the PiSentry only.

Actions #17

Updated by Hammel 5 days ago

Actions #18

Updated by Hammel 4 days ago

  • Blocked by Feature #883: PiStore needs to respond to multicast queries added
Actions

Also available in: Atom PDF