-
-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Contributing & Documentation Tasks #10
Comments
That's a nice list, some points are very interesting. For the question about
Yes they are all used, the main reason of their existence was to give demo to users using whichever platform they choose. I also use them to test my code, the As for Angular in the mix, yeah it's kinda hard to juggle with 2 libraries but at the end you can thank the Angular lib because 85% of is implemented in that lib first. I should run a "search all solution" of the word Angular, there's probably a couple of words to be replaced by Aurelia. Wiki are harder to catch though. I'm trying my best to cover all that. At the end of the day, don't forget 1 thing, the Aurelia-Slickgrid is a totally developed during free/spare time and I make no money out of it (though I wish, there's a "Buy me a Coffee" button but no one ever click on that). The Angular-Slickgrid is worked during work hours and is almost complete on list of features that we require for our projects, so expect amount of features to go down soon. Contributions are totally welcome and are the reasons why this project is Open Source, we help each other and our world is in better shape :) |
Thanks. I never worked with the CLI so the folder organization looked foreign to me and I wanted to make sure I was not making assumptions when reviewing your library. Totally understandable about the free/spare time comment. I use slickgrid in 2 major projects now (only one integrates Aurelia), so I want to help out in any way I can. |
The Side note, I should have told you that before, but when I work features/fixes in my lib, I run this script (well I actually don't run it anymore, since I use VSCode Tasks, but the task does call that script). npm run start:dev To start the Lib Development, all imports (from Oh and the only thing that could be removed, or at least refactored, are all the Unit Test folders. |
By the way
Do you know how to automatically use this issue template in the repo? I never spent time to know how to do that, there wasn't much of issues yet anyway. |
By default GitHub looks for the ISSUE_TEMPLATE.md, PULL_REQUEST_TEMPLATE.md and CONTRIBUTING.md in either the root of your repo or in the .github/ folder. If you change those files, they should automatically change when someone creates an issue/pull request. When I create a new issue I see the entire ISSUE_TEMPLATE.md text that looks very similar when filling our an issue with Aurelia. Does that help? |
Oh ok I didn't know it was automatic lol... Go ahead if you want to make changes to them. Thanks |
I somehow missed your post about explaining the One thing you might want to add in the I use javascript and webpack in my development. I used typescript a few years ago. I want to migrate my current project to typescript because I have another developer working with me and I see where it can be useful. |
Would you mind updating it with your comments? I don't use the command line anymore in that project since I have all the necessary VSCode Tasks in place. Right, I prefer to use |
I use the command line all the time since I use VIM as my editor, so I will be happy to update it. |
For this task of yours
I can rename the |
I think that is good and explicit as you mentioned. However, in the end this is your library and I am here to give my viewpoint so I will agree with your final decision . The reason I originally brought the If you wanted to follow Aurelia conventions for project structure then it might be good to move the EDIT: EDIT: |
@jmzagorski |
I did a full search and removed any references to Angular. Also publish a new Aurelia-Slickgrid version 1.6.0. It includes Export to File and all your PRs, thanks :) |
Thanks! I plan to work on the Also, I was curious about commit: Remove aurelia-slickgrid.wiki. Do you plan on removing these files every time the online WIKI is up to date? Just curious because if I modify a WIKI page that was in that folder, my commit will add a brand new file to your repo and then I will add another commit to show my changes. The commit history might look odd since we will be adding and removing wiki files instead of the commit history showing modifications. If that is what you want then it is fine. Just wanted clarifications on that since I modified two wiki pages that had an angular link. |
I wanted to move the wiki to the I took those 2 Wikis and updated them online already. I will do that at the same time as a release. |
I updated the |
I was looking over the
optionally add an npm script
Then when you are ready to release a new version of the app you can bump the major, minor or patch (the default). Below is an example bumping the minor version and creating the
If all commits to master follow the angular commit convention, the library will add all the commit messages with commit #'s in the
You can do |
As i suspected I do not need to add the Text-Encoding-UTF-8 to my vendors entry. The It should be safe to remove the |
Thanks for confirming, I updated the wiki. Let me know if there's anything I missed in that doc. For the |
Alright, I've installed & setup the |
I thought maybe it would easier on you if I added the two changes to the WIKI here instead of going through a pull request, creating new doc directory etc.: Add,-Update-or-Highlight-a-Datagrid-Item.md -Highlighting a row is customizable with SASS, you can change the highlighted color and/or animation by changing the [SASS variables](https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/modules/angular-slickgrid/styles/_variables.scss) `$row-highlight-background-color` and/or `$row-highlight-fade-animation`
+Highlighting a row is customizable with SASS, you can change the highlighted color and/or animation by changing the [SASS variables](https://github.com/ghiscoding/aurelia-slickgrid/blob/master/aurelia-slickgrid/src/aurelia-slickgrid/styles/_variables.scss) `$row-highlight-background-color` and/or `$row-highlight-fade-animation`
-Take a look at all the available [SASS variables](https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/modules/angular-slickgrid/styles/_variables.scss).
+Take a look at all the available [SASS variables](https://github.com/ghiscoding/aurelia-slickgrid/blob/master/aurelia-slickgrid/src/aurelia-slickgrid/styles/_variables.scss). Download-and-Install-it.md -yarn add angular-slickgrid slickgrid jquery bootstrap font-awesome
+yarn add aurelia-slickgrid slickgrid jquery bootstrap font-awesome |
This damn Angular keeps infiltrating everywhere it can lol. Thanks it's updated. |
lol that should be it (i ran the linux utility |
Very small change to -finally run npm run start:dev (or even easier if you use VSCode, just run the task "Start Library Development")
+finally change your directory back to the root of the project and run `npm run start:dev` -you can run the build with npm run build (or with VSCode, run the task "Build Library")
+you can run the build with `npm run build` from the root of the project (or with VSCode, run the task "Build Library") |
Made some of the changes, I assume you made a mistake in 1st sentence and didn't want to delete VSCode from it... don't delete VSCode, I love it :P |
I have pushed version 1.10.0 with the Compound Filters, though I noticed that my PR #32 didn't show up in the changelog. I had to manually update the changelog, and I believe the reason was because we also need to follow the naming convention on PR as well (aka You also probably saw that I created a Feature Reference list tracker in order to track what is missing from the original fork. It is an exhaustive list and might not be all adressed. So we'll take it with a grain of salt.
Now that the Compound Filters are in, I'd expect to slow down drastically in my Angular repo and possibly in Aurelia as well. |
I understand about the slow down. As you noticed I had to slow down because there has been some pressure to finalize our server API. Hopefully once that is done I can come back to the client side to do some more work on the grid. |
I was going over the Issue template (when I was creating an issue) and was wondering if a few things could be removed. I thought (maybe) 1-3 are not really relevant to this library and number 4 will always be TypeScript. Thoughts?
|
We can remove 1-2, but the bundler (3) should stay since it can be different (the CLI in my demo uses RequireJS. Also for number (4), it should stay also since again the CLI is not with TypeScript, it's plain ESNext JS. So we can remove 1-2, but I would keep the others |
awesome, thank you for keeping me on my toes with the CLI since I have never used it 👍 . Do you care if it is updated right on master? |
Yeah go ahead, for such small things it's all good to do on master. 👍 Just so you know, back then there used to be only 1 bundler type with CLI which was RequireJS (like mine) but now the CLI actually supports 3 bundler types (SystemJS, RequireJS, WebPack). So perhaps the name The main reason I kept the |
If you are okay with it I removed the unit test task since that will be a huge separate PR in itself. I will also remove the errors while running the linter because that is a separate issue not related to documentation either. Finally, i could not remember what this task was for:
Not sure if we still need that. My plan, since I am close to finishing the beta release of my app, was to post how I am using your grid with screenshots and that post will close out this issue. |
Yeah I'm good with that, |
Finally closing this one. I think unit testing should be in separate commits and is still really important to give us and other users peace of mind. I said I would explain how I use this library in my apps. Throughout our discussions I think you discovered my methodologies. I am a redux user so most of my grid activities are reacting to data changes. I use my own custom element called I use a lot of grid editors as you found out and I do not let slickgrid update the data, instead I use the Basically, I use a lot of the basic grid functions right now. I do not use any of your extra service externally in my view models. For version 1 of my app I tried to keep it simple. Below are some of the features I do use.
|
Thanks for all the help you provided in this lib, past and future. It was extremely helpful and learned a lot with your way of coding and methodologies that you use. For the Unit Testing, I agree though I don't know where to start. But I guess just getting a push in the right direction at some point would help. As for |
hmm that is a good idea. If i get some time i might create a "store" based service. |
Aurelia-Slickgrid is now fully tested with Jest, I just finished writing the last unit tests today. There is ~2150 unit tests to cover over 8000 lines of code with a coverage of 99%. More info can be seen in latest version 2.14.1 |
@jmzagorski |
Hi @ghiscoding, glad to hear from you! You are so kind to mention my name. I thank you for that. It seems you had a great year with this library, congratulations! As you could tell, I have taken quite a hiatus from this library. The last year has been crazy developing a few new apps for my company as well as open sourcing some little things we do in house: https://github.com/pinterweb. You will probably laugh at me, but I am still on version 1.13.1 of slick-grid because our app that uses slick-grid has not been updated this year. That blog is a great write up! We have grids in almost every app too, but our newer apps did not need a fully featured grid, which is part of the reason you have not heard from me (I went with simple custom element tables instead). However, I plan to update the application that has your library, so who knows we may speak again soon! |
@jmzagorski
Indeed I kept adding features mostly because of our project requirements, and the biggest addition is obviously the 100% unit test coverage (which is 1 task that you actually asked for in this very own issue hehe) and a few other features asked by the community (like the date & number range filters).
Indeed we do really have data grids everywhere. Just curious is it your own company? I'd be happy to work again with you, I really like the code collabration we had. I'm getting to be done feature wise though, it's been a busy year on this lib and I think it's nearly feature complete (which is a good thing), it even has Excel Export now. I don't think there's any breaking change, you might get console warning for some stuff that I plan to deprecate. You might be interested to know that I18N is now optional, there's a new demo repo to show that as well. I think most of what you asked for in this issue have been addressed. Anyway, I didn't write a long of a reply, though I did, but I'm glad to hear from you. |
It is not my own company, although I am the only contributor to that github organization right now. It is a pseudo-name I created for our real company so our new and current developers are exposed to open source. I want them to contribute somehow, even if it is to our own libraries we share publicly. Happy Holidays to you too! Hopefully you can enjoy some time off! |
I only realized later in my mind that you actually wrote version 1 when I thought you mentioned That's even more funny since you helped me get 2.x in place when I was juggling with DI singleton issues. |
@jmzagorski Hey listen, I'm working on a new SlickGrid lib (yeah another one lol) which Slickgrid-Universal, it's a monorepo structure and I am using it to build VanillaJS code which I can use in Salesforce (quite a feat) which I'm starting to use at work. This will also provide the chance to remove all the code that my other 2 libs (Angular-Slickgrid/Aurelia-Slickgrid) have in common. It's also the perfect time to decouple some features and move them into opt-in packages (OData, GraphQL, FileExport & ExcelExport). Now my question to you would be more about what do you think of this... I'm not sure what is the best approach for the FileExport/ExcelExport packages, these opt-in packages requires certain things from the grid and I'm not sure what would be the best-optimized approach of using these packages. It requires 3 things (1.pubsub service, 2.optional i18n, 3.grid object) and so far it looks like the following import { GridOption } from 'aurelia-slickgrid;
import { ExcelExportService } from @slickgrid-universal/excel-export;
import { PubSubService } from './your-pub-sub'; // probably extends EventAggregator
import { TranslateService } from './your-translate;l // probably extends I18N
constructor(private pubSub: PubSubService, private translate: TranslateService) { }
initGrid {
this.columnDefinitions = [ /*...*/ ];
this.gridOptions = {
enableExcelExport: true,
excelExportOptions: {
service: new ExcelExportService(this.pubSub, this.translate);
// NOTE: I'm also missing the grid object, not sure where/how to pass it to this service
}
}
} Here are a few things to know, the PubSubService (and Translate) are just Abstract Classes in my lib, the user must implement them. So why am I doing it like that? Well because I want (and need) this to work with any Framework (I have at least Angular & Aurelia, maybe VueJS could be another one). Also, as I wrote in the comments, I need to pass the What do you think? Do you have any suggestions? I'm not sure how to make this easy enough for the users (when newing the service) but also as versatile as possible so that it's framework agnostic... also worth to know that Aurelia uses EventAggregator while Angular uses Observables, they are 2 different ways of doing pub/sub. Any feedback would be nice, I'm still thinking about this. ... writing all that made me realize the following might be easier and more acceptable (which includes the grid object as well). Hmm now I wonder how I could make this only once in a global way, still need to think about this. aureliaGridReady(aureliaGrid: AureliaGridInstance) {
const gridObj = aureliaGrid.slickGrid;
const excelService = new ExcelExportService(gridObj, this.pubSub, this.translate);
this.gridOptions.excelExportOptions.service = excelService;
}
initGrid {
this.columnDefinitions = [ /*...*/ ];
this.gridOptions = {
enableExcelExport: true,
excelExportOptions: {
service: null, // instantiated when grid ready
/* other options */
}
}
} ...or maybe yet another option, I could do something similar to what SlickGrid is doing when registering external plugins. // instantiate the ExcelExport globally somewhere with pubsub + i18n services
const excelService = new ExcelExportService(this.pubSub, this.translate);
const exportService = new FileExportService(this.pubSub, this.translate);
export class MyExample {
// load the excelService that was instantiated globally using DI
constructor(private excelService: ExcelExportService) { }
initGrid {
this.columnDefinitions = [ /*...*/ ];
this.gridOptions = {
enableExcelExport: true,
enableFileExport: true,
excelExportOptions: { /* other options */ },
exportOptions: { /* other options */ },
// load 1+ service(s), internally it will also add the grid object by calling `init(gridObj)`
registerServices: [this.excelService, this.exportService];
}
}
} I think I'll go with the later, it seems more versatile, usable and easy to understand |
I am not sure your time-frame on this. I am tied up in a pretty big deadline for May 1st (probably working the weekend 😢 ). However, I will be glad to look at it after that. |
@jmzagorski Stay safe my friend. |
You will have to pardon my lack of knowledge on the details, but here are my questions on the pub/sub service: If you are making a vanilla JS implementation, does the user need to give you a pub/sub service? Can your library have its own internal pub/sub service that is uses? For example, if using your lib in a browser, you can have a DOMEventService that uses |
Right that actually would make sense and end up with smaller implementation, I already did a vanilla JS EventPubSubService using a hidden DOM element with The concept I had in mind was to use the EventAggregator for Aurelia and use Observable for Angular but I guess you're right, why go that route if I can use my internal pubSub service.... hmm wait I need to think a bit more about this, there are some internal pubSub events but also some events exposed to the outside (like |
you could do something similar to how slickgrid does events, adding your own. Or you could do something similar to https://github.com/final-form/final-form, which is a framework agnostic form library. I investigated that library a while back to create an aurelia wrapper and it was pretty easy to subscribe to their events. |
Interesting but it seems more Form oriented not just pub/sub, I think I'll use my pubSubService that I created for the internal events, it should be sufficient. I'll just have to see how to deal with the other external/exposed events, Aurelia's EventAggregator is exactly the same structure but Angular's Observable is quite different, so I'll see. Have you took a look at the Excel Export Service that I wrote in earlier comment? I'd be interested to know your thought on that side. I'm still in favor of using the last proposition that I thought in the grid options |
Is the only reason for the user to pass an export/excel service to the grid because of the pub/sub and translate services? I guess that is where I was heading with my comments. If you decided to make the pub/sub internal then that removes one reason for the user give you those service(s). That leaves the translate service. Can the translation service be added to the grid options (in your edit: As for the form library, i was focusing more on the way it subscribes/emits form events as an example on how you could subscribe/emit events with an internal service. |
I think that I still need to pass a reference to the pubSub Service because I still need to expose some events ( ... or wait, unless I use the |
@jmzagorski After finally having a chance to work on this, I got it work with 0 argument in the constructor, the Translate Service is pulled from the So the code will look like this (it works in my vanilla implementation) import { ExcelExportService } from '@slickgrid-universal/excel-export';
import { FileExportService } from '@slickgrid-universal/file-export';
import { Formatters } from 'aurelia-slickgrid';
export class MyExample {
prepareGrid {
this.gridOptions = {
enableExport: true, // csv
enableExcelExport: true,
exportOptions: {
exportWithFormatter: true,
sanitizeDataExport: true
},
registerExternalServices: [new ExcelExportService(), new FileExportService()],
}
}
} I think this is quite usable and is not too far from the current code (there's only a new import and a register service, then the rest is the same). Of course this is still a breaking change, but is not too far off and the main reason for the monorepo is to give the user options to choose what he wants to use and he'll be able to choose what goes in his final main bundle, that in terms will end up with smaller bundle size for most users... Getting one step closer :) |
This issue is to track each status on various tasks that will help contributing and documentation. As a result, hopefully it will attract more contributers who are interested in a free fast grid. These are not meant to be high priority tasks, but completing them will be helpful. This list is from the perspective of a new contributor (myself), so I apologize if I misstate something.
docs
directory - I can do this since I've done it in my projectspackage.json
there are scripts that copy files to these directories, but I am unsure the purpose? My plan was to add the CHANGELOG.md to thedoc
directory, but there is a lot of other files in there that look similar to other directories.client-ts-wp, Aurelia-project and examples directories error duringnpm run lint
EDIT: removing the unit testing task since that is such a larger task it needs it own issue tracker eventually
The text was updated successfully, but these errors were encountered: