foxusa / storedown Goto Github PK
View Code? Open in Web Editor NEWAn inventory system that is hopefully simple enough for everyone!
Home Page: https://storedown.org/dist/
License: MIT License
An inventory system that is hopefully simple enough for everyone!
Home Page: https://storedown.org/dist/
License: MIT License
Pretty much as it sounds. I keep finding that, since I have many keys to provide values for, I occasionally miss a key or two, and have to go back and audit. Being prohibited from saving a new item unless specific keys are set, would be awesome.
I have not been able to successfully import/export (Not a huge deal as I can just backup couchdb instead, but having manual backups might be nice once I get thousands of items...). Currently YAML export does not work, JSON export does work.
It looks like the function/method for the yaml.safeDump should now just be yaml.dump. If you edit your:
ImportExport.vue
And update yaml.safeDump to simply yaml.dump
saveAs(new Blob([yaml.dump(errors)], { type: 'text/plain;charset=utf-8' }), 'importErrors.yml')
saveAs(new Blob([yaml.dump(data.rows)], { type: 'text/plain;charset=utf-8' }), `${this.exportFileName}.yml`)
However, imports still arent working, but now yaml export is working, and now allows you to download an error file.
I added this change here:
#37
Is there a way to move a box from one location to another besides yaml export and search/replace?
Was having a hell of a time with testing and making this work. I randomly generated a password for "couch" which was
LJvDF9%fmQP9w^R!vpr#
But i would just get the "initial replication..." message permanently. I ended up making a random password with just letters and numbers (Upper-case, lower and numbers) and it all worked instantly, and the DB started populating correctly.
I believe one of the symbols (I would guess the pound?) is breaking the javascript somewhere.
Being able to filter and order on columns in the item list (similar to what excel does) would be great.
Being able to edit multiple item by selecting them in the item list would be nice.
Sorry for all the posts. But i love how you handle different items/locations. I think it is simple, smart and a great way to keep it customizable! I have a rather large project i am about to tackle so I am doing a lot of testing.
I was thinking that making your "item" tree into an actual tree diagram might be useful. It could save on clicks and allow for an entire overview.
https://webix.com/widget/treetable/
https://www.jqueryscript.net/demo/Minimal-Tree-Table-jQuery-Plugin-For-Bootstrap-TreeTable/
https://www.jqueryscript.net/demo/jQuery-Plugin-For-Displaying-A-Tree-Of-Data-In-A-Table-treetable/
I also noticed that it doesnt seem to sort the items in a tree. Would be a bit better if all my "stacks" were together.
I hope you dont see all of these as negative critiques! As I said I love have you are handling your data. I think it makes a lot of sense and I am excited to keep building out your tool!
If you have a key called "Manufacturer", it would be great to have the option of prefilling a list of manufacturers you know will appear in the inventory. When creating new items, a drop-down list could be utilized when that field is selected, cutting down on time it takes to add new entries.
I am about to tackle a large and messy storage room. I was trying to plan out the best way to do this. The location field seems to work well, but the idea of repetitively typing in similar location strings seems repetitive and superfluous.
I think an autocomplete suggestion solution would work very well here. I have used this library in the past:
https://tarekraafat.github.io/autoComplete.js/#/
Basically pulling all of the existing locations through couch db, and adding that as an array of strings to the autocomplete library, it would make inputting a lot of items a lot easier. For example, if i have multiple initial locations, and I am reorganizing a storage closet (Lets call it Storage Closet 1), simply typing "Storage Closet 1" would give me all of the possible locations in that specific location, and one could simply click it.
I dont do a whole lot in javascript, and even I found this library stupidly easy to use, and I think it could add a lot of utility to StoreDown with very minimal modifications. For my use case, I am importing a moderately large list of users from LDAP (About 1000), and I have an email/username autocomplete. I load the entire list from an API I made and load it into the website and it is quite snappy.
Also thinking about all of these containers and Items I am about to create and go through, having a "use last location" button or maybe after making an asset having a "Add another" which defaults to the previous location could be helpful as well.
Perhaps user error, and I have never used couch DB before. I am deploying via kubernetes, and I am not using the --link flag as this is deprecated.
Using curl, I can access the couchdb via http or HTTPS using the username/password I setup. I also verified that this works via CURL from the StorDown container itself, so I know things are connected/working.
After setting up the couchdb connection information, though, a modal pops up that says:
Initial replication in progress...
And it never goes away. So I am not sure what's going on here. Is there more to setup the DB itself other than just creating it through the web gui? Also, I noticed the default DB name in the StoreDown gui defaults to "StoreDown", but couchdb doesnt allow uppercase letters.
Also, while troubleshooting i noticed that kubectl logs couchdb (or docker logs couchdb) returns nothing, but if you set the logging the stderr, it logs for docker as appropriately.
[log]
writer = stderr
While note in the docs for storedown, you should mount your configuration settings as well:
/opt/couchdb/etc/local.d
This not only lets you preserve them, but you can also add these custom settings using vi/vim/nano/whatever easily as well.
--- Update
Still having issues, but it seems that it might be more about the system setup and not necessarily the DB itself. I get this error no matter what I try to do:
I think it might be because I am adding HTTPS via a traefik ingress and not the default HTTPS functionality, the JS is probably trying to do HTTP calls instead of HTTPS. Is there a way to force HTTPS calls without configuring the container for HTTPS?
It'd be great to be able to create view and add them to the left column based on tags, manufacturer, bought from, etc.
When I change pagination , click on an item and go back to the item list it goes back to 10 items /page. Having persistency here would be nice.
Being able to search on specific field would be nice (e.g. tag:gpu vendor:nvidia).
Like that: https://docs.photoprism.app/user-guide/search/filters/
Throughout the app we don't care about case. So when you enter box01
or Box01
it should find the same prefix.
I took a stab at this, and it works quite well I think. I am not sure if I did the pull correctly though. I havent done many, sorry about that!
I added a search input on the List.vue page which changes the page to the same URL with a GET variable. I also added some additional methods under the loadData javascript function to add some queries. It also is smart enough where if you dont use the query syntax ( I.E manufacturer:string or location:string, and just type in string, it defaults to searching the name property)
https://github.com/icsy7867/StoreDown/blob/itemTreeSearch/src/views/List.vue
This could also be implemented with your "search" functionality as well.
It seems pretty useful. You can search specifically for a string in each column. So if you want to search for specific Tags, Names, Locations, Price Paid, Manufacturer, acquiredFrom, etc... You can easily do this. However only one at a time! Would be neat to be able to do something like location:house manufacturer:dewalt. But that would add WAY more complexity.
One caveat, though, is this is done in the DATA variable via javascript in the browser. It would be more efficient to let couchDB handle this, but you would need to add variables as indexes, and update all of your database functions to include some sort of search. However, even with 5000 items, I think this would still be decently quick.
--Examples --
I can use:
acquiredfrom:Home Depot
Which is helpful, as you entered data as "The Home Depot" and "Home Depot".
Being able to enforce that key and in a boolean: true
state would be great for large collection input where other keys might not be unique at all.
I have a proxy redirect requests to the couchdb through a path prefix (/_db) on the same host.
Issue:
Adding the host 'storedown.example.com/_db' as the host and the port empty, the frontend attempts to make requests to 'https://storedown.example.com/_db:/storedown/
Expected:
The frontend to connect to couchdb through https://storedown.example.com/_db/storedown
once I got couchdb working, I've been having a real good time trying to get myself set up with the basics. Thank you for making the promise of random storage and PWAs finally come true.
Something I noticed with my workflow is that it's easier to pregenerate QR code labels with UUIDs and apply them to items, since my access to a label printer can be intermittent. I can set disabled: false
, of course, but this runs the risk of accidentally duplicating an item with an unintentional ID edit. I'd like to allow manual input of IDs for new items only, but I don't think this is currently possible to do with the config (although I could be wrong about this, my webdev skills are nonexistent).
Have two hook types:
1 Notify
Where the rest call is make but return is ignored. The call can fail without harming the app
2 Transform
Where the app waits for the return and uses its output.
This is built into your tools already and it could be quite helpful for sorting by location or item name.
After doing a test, you simply have to update your List.vue file and change the sortable from false to true:
this.headers.push({
text: item.displayName,
value: item.name,
align: 'left',
item: item, // So you can access all the parameters. Above are given in the data table support format.
sortable: true
Added this change in:
#37
I have added 15 items, but the UI reports 16 (assume column labels is being counted);
Here's the dataset being used that was exported after the screenshot;
storedown.1699764969319.csv
I set it up on my Synology (I can't use docker-compose but I followed the instructions, btw you missed the step on actually creating the database), but I see no evidence that StoreDown ever communicates with CouchDB, it doesn't throw any error messages but so far the database has literally nothing in it.
UPDATE: I'm already moving onto a different solution.
A boolean (since it uses a toggle switch) that is not toggled on, should always default to false.
In the screenshot attached, there are 3 boolean columns: Factory Second, Retired, and Bagged.
- name: factory_second
displayName: Factory Second?
type: boolean
- name: retired
displayName: Retired?
type: boolean
- name: bagged
displayName: Bagged?
type: boolean
I set up couchdb config as described in th einstall doc, When I try to set the connection in StoreDown (using the ip of the couchdb instance, port 5984 and DB name "StoreDown") I get the message "Replication complete" after a while.
But when I try to add a new Item I just get an empty "Item Editor" page with a Save and Discard Button. I also tried importing the demo data which gave me the message that 5 Items were imported, but there were no items in Item List etc.
Neither the StoreDown container nor the couchdb container give me any error messages (in docker logs) during the whole process.
Any help would be appreciated!
I have different types of small boxes. Just by writing their name is hard to find them back. Can it be possible to put images and see them as thumbnails in search?
I am not familiar with vue and CouchDB.
I am using https://mementodatabase.com/ now. This is the only feature that is preventing me from switching to StoreDown.
Is it possible to set up drop down lists that I could then make visible in the tree view? My use case would be something like Christmas light string. I could set up a list of length/number of lights and use the drop down instead of typing it. That would avoid issues where I might type "50ft" and my wife my type "50 ft" or "50'". Then in the tree view I wouldn't see all three.
Thank you for developing this. I've tried a bunch and at StoreDown is by far the one that meets my needs the best.
:-)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.