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
API for local files (up|down)loading #243
Conversation
Some functions are (by their nature) strictly specific to environment.
There are no Web api to make that directly, but it's possible using some techniques. This fragmentation is bad. So I'm going to implement some new environment-independent api functions. |
714e394
to
9a135f8
Compare
// @function saveFile(data: String, filename?: String, dataType? String)
// Save data to file with given filename, using IITCm file chooser, or generic browser routine.
// `dataType` can be set to filter IITCm file chooser filetypes. Edit But we have ho Java developer at the moment.. |
15873bf
to
d12bc6b
Compare
9c9c481
to
7f98ef1
Compare
// @function loadFiles(options: Object): Object (L.Evented instance)
// Instantiates a `L.Evented` object, and initiates file chooser dialog,
// using methods, depending on environment:
// - desktop: simulating click on hidden `input` HTML element, created using specified `options`
// - IITCm (android): using `window.requestFile` (`options` ignored).
// @event init: Event
// Fired before file is read.
// `Event` object has additional property `file`: contains processed [`File`](https://w3c.github.io/FileAPI/#dfn-file) object.
// Note: in order to stop further processing of the file
// handler may throw error (is's safe as errors are caught)
// @event init:error: Event
// Fired on errors arised in 'init' handler(s).
// `Event` object has following additional properties:
// `file`: contains processed [`File`](https://w3c.github.io/FileAPI/#dfn-file) object.
// `error`: `Error` object.
// Note: if no handlers found for `error:init` then default one will be attached (`console.warn`)
// @event load: Event
// `Event` object has following additional properties:
// `reader`: raw instance of [`FileReader`](https://w3c.github.io/FileAPI/#APIASynch) interface
// `file`: raw instance of [`File`/`Blob`](https://w3c.github.io/FileAPI/#dfn-file)
// `originalEvent`: raw [event](https://w3c.github.io/FileAPI/#events)
// @event loaded: Event
// Fired after all files are processed (either with success or with error). |
For load file part, what’s the problem with default input button? I think using input button and implementing proper methods in IITCm are more safe. Also I suggest we separate file apis with Leaflet. It’s weird that we put file reader under L namespace. |
|
So let's talk about leaflet. Our project in general is closely connected with leaflet already. But we can put some high-level function (or two) into other namespace, if you find it less confusing. |
7f98ef1
to
ecd642c
Compare
The function will use IITCm filechooser, or generic browser routines. bookmarks and draw-tools adapted to use the function, so now it's possible to export data to files on desktop too
The function will use IITCm filechooser, or generic browser routines. bookmarks and draw-tools adapted to use the function, so now it's possible to import data from files on desktop too
After IITC-CE#250 we can load files in IITCm with common Web API. (or use L.FileReader/L.FileListLoader as helpers, but it's optional)
It's left for compatibility. Internally it uses new methods.
ecd642c
to
5d57b0f
Compare
I second the opinion that placing any IITC functions under L. is quite strange. |
Those are not IITC-specific functions. And those are exactly Leaflet classes. Actually in the same manner we already use a lot of other 3rd-party Leaflet plugins - check |
Another example: see master branch, boot.js:616. But you are right, we should document all these things. |
- Update most upstream sources, and significantly enhance several plugins IITC-CE#134 (a lot of changes, follow the link to see) - Fix performance drop when displaying a large number of ornaments IITC-CE#181 - Improve RegionScoreboard IITC-CE#179 © McBen + some fixes - Remove confusing message from artifacts dialog IITC-CE#216 - Portal info: display coordinates without angled brackets IITC-CE#233 - Leaflet controls: prevent mobile style on desktop IITC-CE#189 - Increase map renderer padding (and make value customizable) IITC-CE#201 - Portal info: `shielding` tooltip: round mitigation `excess` to cope with lack of js float precision IITC-CE#279 - Fix miscellaneous bugs in core and plugins IITC-CE#157 - Change default intel url (to match stock) IITC-CE#267 - Implement plugins priority control IITC-CE#205 - Stop console 'spam' using customizable logger IITC-CE#235 - Consistent errors throwing IITC-CE#248 - API for local files (up|down)loading IITC-CE#243 - Remove some unused stuff from window object IITC-CE#101 - Refactor to use common function `window.makePermalink` (utils_misc.js) IITC-CE#198 - Isolate every core module in separate IIFE IITC-CE#234 - Move wrapper template to separate file IITC-CE#238 - DEFAULT_ZOOM = 15 (to match stock intel) IITC-CE#281 - IITC-CE#229: - Refactor build system into several modules (can be used as cli utilities). Implement `watch` mode to auto-rebuild on source changes. - Escape macros in code in order to keep js-validity, fix IITC-CE#50. Use template from settings instead of url harcoding (closes IITC-CE#150). - Simplify userscripts source template, rename plugin sources: `*.user.js` -> `*.js`, rearrange source directories. - Remove timestamp component from `version` of Release scripts (closes IITC-CE#99). - Additional dev tools: `web_meta_gen.py`, `web_server_local.py`, `tampermonkey_stubs_gen.py`. - Other - see IITC-CE#134 (solve IITC-CE#70: Manage upstream externals) - Update docs IITC-CE#264, remove outdated (info transferred to [wiki](https://github.com/IITC-CE/ingress-intel-total-conversion/wiki)) - Improve scale-bar and scoreboard plugins IITC-CE#158 - Improve styles of text labels (portal-level-numbers, portal-names, portal-names, regions, keys-on-map) IITC-CE#104 - Other - draw-tools, bookmarks: (make use of IITC-CE#243) support file import/export on desktop too - see IITC-CE#134: significantly enhance several plugins : overlay-kml, minimap, basemap-bing, basemap-yandex, tidy-links, pan-control, etc (see commit messages) - sync: fix and update IITC-CE#212 - draw-tools: fix mobile-related bugs; add Circle again IITC-CE#175 - bookmarks: fix iitc download url IITC-CE#150 - portals-list: filter out portal without real data (bug in intel) IITC-CE#265 - Other: see IITC-CE#157 (cache-portals-on-map, layer-count, draw-tools, bookmarks, missions) - 'Support DeX desktop mode' option IITC-CE#161 - Add 'Plugins' shortcut to main menu IITC-CE#266 - fix bugs on login page IITC-CE#164 - fix some bugs in plugins handling IITC-CE#245 - fix 'Send screenshot' function IITC-CE#169 - fix error that made it difficult to pick plugin file IITC-CE#239 - fix plugin initialization bug IITC-CE#270 - better handling of uploads IITC-CE#250
# Release notes ## IITC main script ### enhancements - Update most upstream sources, and significantly enhance several plugins IITC-CE#134 (a lot of changes, follow the link to see) - Fix performance drop when displaying a large number of ornaments IITC-CE#181 - Improve RegionScoreboard IITC-CE#179 © McBen + some fixes - Remove confusing message from artifacts dialog IITC-CE#216 - Portal info: display coordinates without angled brackets IITC-CE#233 - Leaflet controls: prevent mobile style on desktop IITC-CE#189 - Increase map renderer padding (and make value customizable) IITC-CE#201 - Portal info: `shielding` tooltip: round mitigation `excess` to cope with lack of js float precision IITC-CE#279 ### bugfixes - Fix miscellaneous bugs in core and plugins IITC-CE#157 - Change default intel url (to match stock) IITC-CE#267 ### development - Implement plugins priority control IITC-CE#205 - Stop console 'spam' using customizable logger IITC-CE#235 - Consistent errors throwing IITC-CE#248 - API for local files (up|down)loading IITC-CE#243 - Remove some unused stuff from window object IITC-CE#101 - Refactor to use common function `window.makePermalink` (utils_misc.js) IITC-CE#198 - Isolate every core module in separate IIFE IITC-CE#234 - Move wrapper template to separate file IITC-CE#238 - DEFAULT_ZOOM = 15 (to match stock intel) IITC-CE#281 - IITC-CE#229: - Refactor build system into several modules (can be used as cli utilities). Implement `watch` mode to auto-rebuild on source changes. - Escape macros in code in order to keep js-validity, fix IITC-CE#50. Use template from settings instead of url harcoding (closes IITC-CE#150). - Simplify userscripts source template, rename plugin sources: `*.user.js` -> `*.js`, rearrange source directories. - Remove timestamp component from `version` of Release scripts (closes IITC-CE#99). - Additional dev tools: `web_meta_gen.py`, `web_server_local.py`, `tampermonkey_stubs_gen.py`. - Other - see IITC-CE#134 (solve IITC-CE#70: Manage upstream externals) - Update docs IITC-CE#264, remove outdated (info transferred to [wiki](https://github.com/IITC-CE/ingress-intel-total-conversion/wiki)) ## Plugins ### enhancements - Improve scale-bar and scoreboard plugins IITC-CE#158 - Improve styles of text labels (portal-level-numbers, portal-names, portal-names, regions, keys-on-map) IITC-CE#104 - Other - draw-tools, bookmarks: (make use of IITC-CE#243) support file import/export on desktop too - see IITC-CE#134: significantly enhance several plugins : overlay-kml, minimap, basemap-bing, basemap-yandex, tidy-links, pan-control, etc (see commit messages) ### bugfixes - sync: fix and update IITC-CE#212 - draw-tools: fix mobile-related bugs; add Circle again IITC-CE#175 - bookmarks: fix iitc download url IITC-CE#150 - portals-list: filter out portal without real data (bug in intel) IITC-CE#265 - Other: see IITC-CE#157 (cache-portals-on-map, layer-count, draw-tools, bookmarks, missions) ## IITC-Mobile app ### enhancements - 'Support DeX desktop mode' option IITC-CE#161 - Add 'Plugins' shortcut to main menu IITC-CE#266 ### bugfixes - fix bugs on login page IITC-CE#164 - fix some bugs in plugins handling IITC-CE#245 - fix 'Send screenshot' function IITC-CE#169 - fix error that made it difficult to pick plugin file IITC-CE#239 - fix plugin initialization bug IITC-CE#270 ### development - better handling of uploads IITC-CE#250
bump version to 0.30 # Release notes ## IITC main script ### enhancements - Update most upstream sources, and significantly enhance several plugins #134 (a lot of changes, follow the link to see) - Fix performance drop when displaying a large number of ornaments #181 - Improve RegionScoreboard #179 © McBen + some fixes - Remove confusing message from artifacts dialog #216 - Portal info: display coordinates without angled brackets #233 - Leaflet controls: prevent mobile style on desktop #189 - Increase map renderer padding (and make value customizable) #201 - Portal info: `shielding` tooltip: round mitigation `excess` to cope with lack of js float precision #279 ### bugfixes - Fix miscellaneous bugs in core and plugins #157 - Change default intel url (to match stock) #267 ### development - Implement plugins priority control #205 - Stop console 'spam' using customizable logger #235 - Consistent errors throwing #248 - API for local files (up|down)loading #243 - Remove some unused stuff from window object #101 - Refactor to use common function `window.makePermalink` (utils_misc.js) #198 - Isolate every core module in separate IIFE #234 - Move wrapper template to separate file #238 - DEFAULT_ZOOM = 15 (to match stock intel) #281 - #229: - Refactor build system into several modules (can be used as cli utilities). Implement `watch` mode to auto-rebuild on source changes. - Escape macros in code in order to keep js-validity, fix #50. Use template from settings instead of url harcoding (closes #150). - Simplify userscripts source template, rename plugin sources: `*.user.js` -> `*.js`, rearrange source directories. - Remove timestamp component from `version` of Release scripts (closes #99). - Additional dev tools: `web_meta_gen.py`, `web_server_local.py`, `tampermonkey_stubs_gen.py`. - Other - see #134 (solve #70: Manage upstream externals) - Update docs #264, remove outdated (info transferred to [wiki](https://github.com/IITC-CE/ingress-intel-total-conversion/wiki)) ## Plugins ### enhancements - Improve scale-bar and scoreboard plugins #158 - Improve styles of text labels (portal-level-numbers, portal-names, portal-names, regions, keys-on-map) #104 - Other - draw-tools, bookmarks: (make use of #243) support file import/export on desktop too - see #134: significantly enhance several plugins : overlay-kml, minimap, basemap-bing, basemap-yandex, tidy-links, pan-control, etc (see commit messages) ### bugfixes - sync: fix and update #212 - draw-tools: fix mobile-related bugs; add Circle again #175 - bookmarks: fix iitc download url #150 - portals-list: filter out portal without real data (bug in intel) #265 - Other: see #157 (cache-portals-on-map, layer-count, draw-tools, bookmarks, missions) ## IITC-Mobile app ### enhancements - 'Support DeX desktop mode' option #161 - Add 'Plugins' shortcut to main menu #266 - Adapt to changes in Google authorization #283 ### bugfixes - fix bugs on login page #164 - fix some bugs in plugins handling #245 - fix 'Send screenshot' function #169 - fix error that made it difficult to pick plugin file #239 - fix plugin initialization bug #270 ### development - better handling of uploads #250
utils_file.js
):window.saveFile
(subject to change, follow webview input file / download file #244)input
(like in full-featured browsers).Some additional helpers implemented (
L.FileReader
/L.FileListLoader
)window.requestFile
deprecated (switched to useL.FileListLoader
internally)draw-tools
andbookmarks
.(Previously import/export was implemented for IITCm only)