Embodiments of the subject matter described herein relate generally to computer systems. More particularly, embodiments of the subject matter relate to methods and systems for selecting and processing files across multiple folders of a cloud-based database system.
A computer-based file system typically includes a hierarchy of folders that are used to organize and store files. A traditional file system allows a user to select one or more files contained in a single folder, wherein the selected files can be manipulated, processed, or otherwise managed as needed. For example, a user can open a chosen file folder, select one or more files in the chosen folder, and upload the selected files to a social media post, attach the selected files to an outgoing email, copy the selected files, move the selected files, or the like.
Conventional file systems and file selection methodologies are limited in that files can only be selected from one folder at a time. Thus, if a user wants to upload or attach multiple files that are distributed across two or more folders, the file selection process must be repeated for each individual folder that contains the desired files. For example, the user must open a first folder, select one or more files in the first folder, upload the selected files, navigate to and open a second folder, select one or more files in the second folder, and upload the newly selected files. This process can be complicated, time consuming, and cumbersome.
Accordingly, it is desirable to have an improved methodology that supports the selection of multiple files across different file folders. An improved methodology and other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and the foregoing technical field and background.
A more complete understanding of the subject matter may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
The following detailed description is merely illustrative in nature and is not intended to limit the embodiments of the subject matter or the application and uses of such embodiments. As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.
Techniques and technologies may be described herein in terms of functional and/or logical block components, and with reference to symbolic representations of operations, processing tasks, and functions that may be performed by various computing components or devices. Such operations, tasks, and functions are sometimes referred to as being computer-executed, computerized, software-implemented, or computer-implemented. It should be appreciated that the various block components shown in the figures may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. For example, an embodiment of a system or a component may employ various integrated circuit components, e.g., memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices.
When implemented in software or firmware, various elements of the systems described herein can be realized using code segments or instructions that perform the various tasks. In certain embodiments, the program or code segments are stored in a tangible processor-readable medium, which may include any medium that can store or transfer information. Examples of a non-transitory and processor-readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a CD-ROM, an optical disk, a hard disk, or the like.
Embodiments of the subject matter described herein generally relate to methods and systems for selecting files, and performing certain actions on the selected files. It should be noted that although one or more embodiments may be described herein in the context of a virtual application in a database system, the subject matter is not necessarily so limited, and in practice, may be implemented in an equivalent manner in any number of different application systems, on-demand systems, cloud computing systems, and the like, and in the context of any type of document, computer file or other resource that includes, presents, or otherwise displays a graphical user interface (GUI) display associated with a user interface capable of receiving input pertaining to the GUI display.
In exemplary embodiments described herein, files that are maintained, managed, or accessed by a cloud-based database system can be selected across a plurality of different folders in a stateful, persistent manner. The database system maintains a suitably formatted file system with multiple folders containing selectable files, and the folders (and the contents of the folders) are displayed to a user of a client system in an on-demand basis. The file selection methodology described here allows the user of the client system to select any number of files contained in any number of folders before initiating an operation that involves the selected files. The database system keeps track of the selected files as the user navigates between different folders, and need not initiate any file manipulating action until after the user has completed the file selection process.
The database system 102 is implemented using computer hardware. In this regard, the database system 102 includes at least one processor 110 and at least one memory element 112 that is communicatively coupled to the processor 110. The processor 110 may be, for example, a central processing unit (CPU), a graphical processing unit (GPU), a field programmable gate array (FPGA), a microcontroller, an application specific integrated circuit (ASIC), or any other logic device or combination thereof. As discussed in further detail below, the processor 110 of the database system 102 executes non-transitory computer-executable instructions stored in the memory element 112, wherein execution of the instructions cause the database system 102 to perform the various operations that support the cross-folder file selection technique.
The memory element 112 can be implemented with any combination of volatile and non-volatile memory. The memory element 112 has non-transitory computer-executable instructions stored thereon, wherein the instructions are configurable to be executed by the processor 110 as needed. The memory element 112 also includes instructions associated with a file system 114 of the database system 102, and instructions associated with a virtual application 116 of the database system 102. The file system 114 includes a plurality of file folders arranged in any desired format, and each of the file folders can accommodate any number of selectable files. The files referenced by the file system 114 can be stored in the memory element 112 and/or in one or more other storage elements (not shown in
The system 100 can support a plurality of client devices. For simplicity and ease of illustration,
The client device 104 generally represents an electronic device coupled to the network 108 that may be utilized by a user to access the virtual application 116 maintained by the database system 102. In practice, the client device 104 can be realized as any sort of personal computer, mobile telephone, tablet, wearable device, or other network-enabled electronic device that includes a display device, such as a monitor, screen, or another conventional electronic display, capable of graphically presenting data and/or information provided by the virtual application 116, along with a user input device, such as a touchscreen, a touch panel, a mouse, a joystick, a directional pad, a motion sensor, or the like, capable of receiving gestural input from the user of the client device 104. A user manipulates the client device 104 to execute a client application 126 that contacts the database system 102 using a networking protocol, such as the hypertext transport protocol (HTTP) or the like, to access or otherwise initiate an instance of the virtual application 116 presented within the client application 126. As described in greater detail below in the context of
In certain exemplary embodiments, the client application 126 is a web browser application, and the virtual application 116 of the database system 102 is provided to the user of the client device 104 via the web browser application (in the form of web pages displayed using the web browser application). Thus, the user can interact with GUI displays, GUI control elements, data entry fields, and other interactive elements provided by the web browser application using the input/output devices 120 as needed.
Although the database system 102 and the client device 104 are illustrated as having local memory elements 112, 124, the database system 102 and the client device 104 can also be configured to communicate with at least one external file source 106, which can be realized as a remote storage or memory element having at least one corresponding file system 130 associated therewith. For example, the external file source 106 can be implemented as a cloud storage system or any other memory system maintained by a third party service or maintained by the same entity that maintains the database system 102. The files contained in the external file source 106 can be accessed through the network 108, which may include (without limitation) a wired network, a wireless network (e.g., WiFi, Bluetooth, Zigbee or the like), a cellular network, a satellite network or any other communication network or combination thereof. Further, while the instructions for carrying out the cross-folder file selection methodologies are illustrated as being stored in the respective local memory elements 112, 124, those instructions could also reside in one or more external file sources 106 if so desired.
As used herein, a computer-based “file” is defined in a manner that is consistent with ordinary usage in the computer field. In this regard, the definition provided by The Wikipedia Foundation is applicable: “a computer file is a resource for storing information, which is available to a computer program and is usually based on some kind of durable storage.” Thus, a file handled by the process 200 can have any commonly used file extension for text documents, images, videos, spreadsheets, notes, etc. (such as .docx, .pdf, .xlsx, .txt, .jpg, .tiff, just to name a few). Moreover, a file handled by the process 200 can be a hyperlink, a folder or subfolder, a container file, an executable, an icon, or the like. These particular examples are not intended to be limiting or exhaustive in any way. It should be appreciated that any type of file can be managed by the process 200 as long as the file type is compatible with the database system and the related file system.
The exemplary methodology described here assumes that the database system 102 provides an instance of the virtual application 116 to the client device 104, wherein the virtual application 116 includes functionality that enables the user of the client device 104 to select or pick files that will be subjected to an operation, action, or procedure. For example, the virtual application 116 can be a social networking application that supports file uploading to comment posts, attaching files to email or direct messages, and creating new posts that include files. As another example, the virtual application 116 can be a customer relationship management application or a file archiving application that supports common file manipulation tasks, such as moving files from one folder to another, deleting files, and copying files.
This example assumes that the user of the client device 104 initiates a feature or function of the virtual application 116 that requires viewing or navigating file folders and/or files associated with the file system 114 of the database system 102. To this end, the process 200 generates a suitably configured GUI that is formatted for presentation at the client device 104, wherein the GUI includes selectable file folders or, equivalently, selectable GUI elements or controls that are indicative of selectable file folders (task 206). The GUI can be generated and displayed in response to user activation of a particular button, link, or feature, such as an “Attach” button, an “Upload” button, a “Browse” button, a “Share” button, or the like. In practice, the GUI can be The client device 104 receives and displays the GUI (task 208) such that the user of the client device 104 can navigate to and choose one of the selectable file folders. In this regard,
The database system 102 receives the second user input, which identifies the selected file(s), and updates the corresponding selection state to save metadata, pointers, or flags associated with the selected file(s). The database system 102 generates or updates a GUI element that includes a visual representation of the selected file(s) (task 220), and communicates with the client device 104 to display or update the GUI element (task 224).
If the user is done with the file selection procedure (the “Yes” branch of query task 226), then the process 200 generates a third user input that represents an appropriate action command (task 228). Referring again to
It should be appreciated that the database system 102 can generate and provide any number of GUIs for rendering at the client device 104, and that the client device can generate and provide any number of user inputs that identify selected folders and selected files in the manner described above. Thus, the file selection methodology can be repeated for different files, different file folders, and/or different file subfolders (whether they are maintained by the database system 102 and/or maintained at an external file source),
Referring back to
The methodology described above enables the database system 102 to receive file selection instructions that identify a plurality of selected files that are distributed across a plurality of file folders, which may be associated with cloud-based files and/or locally stored files in some embodiments. As explained above, the file selection instructions originate from an application of the client device 104 (e.g., a web browser application that supports a virtual application 116 provided by the database system 102). The mechanism used to preserve the file selection state and carry out the desired action can vary from one embodiment to another. In accordance with certain embodiments, the database system 102 saves pointers to the selected files, and the actual processing or handling of the referenced files is delayed until the action command is received. In accordance with other embodiments, the database system 102 can take action in response to the selection of files and perform operations in the background in an anticipatory manner. For example, if the user is uploading files to a social media post, the database system 102 can start uploading selected files in the background while the user continues selecting additional files to upload. Moreover, files can be identified in a continuous manner as they are selected (to accommodate “pre-processing” by the database system 102) or they can be identified in a collective manner after the user indicates that he is finished selecting files, as described above with reference to
The cross-folder file selection methodology described above is appropriate for use with a cloud-based file system because traditional limitations and restrictions imposed by the client device operating system, web browser application, and local applications can be easily overcome. In certain implementations, however, the cross-folder file selection methodology can be used to select files stored locally on the client device. To this end, the virtual application 116 and/or the client application 126 may need to be configured and designed to support the techniques and schemes outlined above. For example, the database system 102 can be suitably configured to save pointers or references to client device files that have been selected, using features of the virtual application 116 or the client application 126 rather than the standard file explorer or local file system.
While at least one exemplary embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the claimed subject matter in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope defined by the claims, which includes known equivalents and foreseeable equivalents at the time of filing this patent application.